如何检查 NSMutableArray 元素是 NSNull 还是 AnyObject

how to check if NSMutableArray element is NSNull or AnyObject

我有一个PersonsArray: NSMutableArray = [NSNull, NSNull, NSNUll, NSNull, NSNull, NSNUll, NSNull]。我需要七个插槽,然后我可以用一个 Entity CoreData 条目作为 AnyObject 来填充它们。

我需要在这个 NSMutableArray 上做一个 for in 循环...

如果索引槽是 NSNull 我想传递给下一个索引槽,如果索引槽充满了我的对象我想在这个对象上执行代码。


example PersonsArray: NSMutableArray = [
    NSNull,
    NSNull,
    NSNull,
    "<iswift.Person: 0x7f93d95d6ce0> (entity: Person; id: 0xd000000000080000 <x-coredata://8DD0B78C-C624-4808-9231-1CB419EF8B50/Person/p2> ; data: {\n    image = nil;\n    name = dustin;\n})",
    NSNull,
    NSNull,
    NSNull
]

正在尝试

for index in 0..<PersonsArray.count {
        if PersonsArray[index] != NSNull {println(index)}
}

提出了一堆也不起作用的更改,例如

if PersonsArray[index] as! NSNull != NSNull.self {println(index)}

if PersonsArray[index] as! NSNull != NSNull() {println(index)}

注意:使用 NSNull 只是 NSMutableArray 中的占位符,因此它的计数始终为 7,我可以用对象替换任何 (7) 个槽。我应该使用 NSNull 以外的东西作为我的占位符吗?

NSNull() 是单例对象,因此您可以简单地测试是否 数组元素是 NSNull:

的实例
if personsArray[index] is NSNull { ... }

或使用"identical to"运算符:

if personsArray[index] === NSNull() { ... }

或者,您可以使用可选数组:

let personsArray = [Person?](count: 7, repeatedValue: nil)
// or more verbosely:
let personsArray : [Person?] = [ nil, nil, nil, nil, nil, nil, nil ]

使用 nil 作为空位。