Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift中为NSArray添加零值?_Swift_Swift4 - Fatal编程技术网

如何在swift中为NSArray添加零值?

如何在swift中为NSArray添加零值?,swift,swift4,Swift,Swift4,NSArray.init(数组:[Any]) NSArray有一个初始函数,其参数为[Any]。但不是[Any?],因此,如何将nil值添加到此数组?NSArray/NSMutableArray不允许在数组中存储nil值。这就是为什么Swift API都不允许可选值的原因 如果您真的需要为nil做一些事情,请使用NSNull(),尽管我不能100%确定这将如何处理核心数据 斯威夫特实际上是为你做的。如果您传递一个Swift选项数组,任何nil值都将转换为NSNull。例如: var array

NSArray.init(数组:[Any])


NSArray有一个初始函数,其参数为[Any]。但不是[Any?],因此,如何将nil值添加到此数组?

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

如果您真的需要为nil做一些事情,请使用
NSNull()
,尽管我不能100%确定这将如何处理核心数据

斯威夫特实际上是为你做的。如果您传递一个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
var数组=[Int?]()
array.append(4)
array.append(nil)
设nsa=数组作为NSArray
打印(nsa)/(4“”)
打印(类型:nsa[1])//NSNull

请注意,在Swift 4.0下使用
let nsa=NSArray(array:array)
而不是
let nsa=array as NSArray
在没有警告的情况下工作,但在Swift 4.1下会发出警告。

为什么要在Swift中使用
NSArray
?为什么不使用Swift数组?@rmaddy因为将数组保存到核心数据应该是NSArray,所以我必须使用NSArray.NSArray/NSMUTABLEARRY不允许您在数组中存储
nil
值。@rmaddy所以我保存了一个可选值,例如“var array:[[Int]?]”和“NSArray(array:array)”,它只是给我一个警告表达式从'[Int]?'隐式强制为Any,并且它也正常工作,所以我是否应该使此警告静音?
(NS)Core Data不支持数组作为属性。Core Data使用
Set
@CLOX如果您在从CoreData获取数据后尽早转换为Swift
Array
,并在推送到CoreData之前最晚可能的时间转换为NSArray,您在Swift世界中的日子会轻松得多。@rmaddy:您的示例是我会在第4行收到警告,它说强制展开可以避免。将第4行替换为
让nsa=array作为NSArray
@vacawama和CLOX我发布的代码不会收到错误或警告。它在Xcode 9.2(Swift 4.0)中正常工作游乐场。但建议的更改仍然很好。@vacawama是Swift 4.2中的
NSArray(array:)
的不可静音警告(您需要说
让nsa=NSArray(array:array as[Any])
来确认选项的删除)但是在大多数情况下,作为NSArray的
是做桥接的首选方法。