swift - Swift4 转换后 "' init ' is deprecated"警告

标签 swift swift4

在 Swift3 中,我之前使用以下方法将 Bool 转换为 Int

let _ = Int(NSNumber(value: false))

转换为 Swift4 后,我收到“'init' 已弃用”警告。还应该怎么做?

最佳答案

对于 Swift 4.2 和 Swift 5,您可以选择以下 5 种解决方案之一来解决您的问题。


#1。使用 NSNumberintValue 属性

import Foundation

let integer = NSNumber(value: false).intValue
print(integer) // prints 0

#2。使用类型转换

import Foundation

let integer = NSNumber(value: false) as? Int
print(String(describing: integer)) // prints Optional(0)

#3。使用 Intinit(exactly:)初始化器

import Foundation

let integer = Int(exactly: NSNumber(value: false))
print(String(describing: integer)) // prints Optional(0)

作为前面代码的替代,您可以使用下面更简洁的代码。

import Foundation

let integer = Int(exactly: false)
print(String(describing: integer)) // prints Optional(0)

#4。使用 Intinit(truncating:)初始化程序

import Foundation

let integer = Int(truncating: false)
print(integer) // prints 0

#5。使用控制流

请注意,以下示例代码不需要导入 Foundation。

用法 #1(if 语句):

let integer: Int
let bool = false

if bool {
    integer = 1
} else {
    integer = 0
}
print(integer) // prints 0

用法 #2(三元运算符):

let integer = false ? 1 : 0
print(integer) // prints 0

关于swift - Swift4 转换后 "' init ' is deprecated"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44421140/

相关文章:

json - 如何解码不同类型的 JSON 属性?

ios - xcode 10 - 核心数据迁移 String 到 Int

swift - 无法在 Swift 语言中实例化通用类型的数组

ios - 如何在 Swift 中访问多个动画?

ios - 无法从 Objective-C : "Property not found on object of type" 访问 Swift 4 类

ios - CoreData fetch() 返回无序的对象

ios - 如何为 `UILabel` 设置字符间距 (kern) 和删除线样式?

swift - 当我打开 Skype、FB、Twitter,但我们的应用程序正在使用 swift 后台运行时,如何截取屏幕截图

swift - Swift语言中Core Audio的使用方法

json - 使用可编码解析 JSON 并忽略 JSON 的第一层