Как проверить, является ли элемент NSMutableArray NSNull или AnyObject
У меня есть PersonsArray: NSMutableArray = [NSNull, NSNull, NSNUll, NSNull, NSNull, NSNUll, NSNull]
, Мне понадобилось семь слотов, которые я затем мог бы заполнить записью Entity CoreData как AnyObject.
Мне нужно сделать цикл for в этом NSMutableArray...
Если слот индекса равен 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 в качестве заполнителя?
1 ответ
NSNull()
является одноэлементным объектом, поэтому вы можете просто проверить, является ли элемент массива экземпляром NSNull
:
if personsArray[index] is NSNull { ... }
или используйте оператор "идентично":
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
для пустых слотов.