2

私は持っていPersonsArray: NSMutableArray = [NSNull, NSNull, NSNUll, NSNull, NSNull, NSNUll, NSNull]ます。AnyObject として Entity CoreData エントリを入力できる 7 つのスロットが必要でした。

この 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 以外のものをプレースホルダーとして使用する必要がありますか?

4

1 に答える 1

5

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空きスロットに使用します。

于 2015-04-29T21:33:39.127 に答える