如何在 swift 中向 NSArray 添加 nil 值?

clo*_*xnu 2 swift swift4

NSArray.init(数组: [任意])

NSArray 有一个初始函数,其参数为 [Any]。但不是[Any?],那么,如何给这个数组添加一个nil值呢?

rma*_*ddy 5

NSArray/NSMutableArray不允许你存储nil在数组中存储值。这就是为什么 Swift API 都不允许可选值的原因。

如果你真的需要零的东西,请使用NSNull()尽管我不能 100% 确定它如何与 Core Data 一起使用。

Swift 实际上已经为你做到了这一点。如果您传递一个 Swift 可选数组,任何nil值都会转换为NSNull. 例子:

var array = [Int?]()
array.append(4)
array.append(nil)
let nsa = array as NSArray
print(nsa) // (4, "<null>")
print(type(of: nsa[1])) // NSNull
Run Code Online (Sandbox Code Playgroud)

请注意,使用let nsa = NSArray(array: array)代替在let nsa = array as NSArraySwift 4.0 下工作时不会发出警告,但从 Swift 4.1 开始会发出警告。