Objective-C でブール値の配列を利用する必要があります。ほとんどの設定が完了しましたが、コンパイラは次のステートメントで警告をスローします。
[updated_users replaceObjectAtIndex:index withObject:YES];
これは確かに、YES は単純にオブジェクトではないためです。それはプリミティブです。とにかく、私はこれを行う必要があり、それを達成する方法についてアドバイスをいただければ幸いです.
ありがとう。
Objective-C でブール値の配列を利用する必要があります。ほとんどの設定が完了しましたが、コンパイラは次のステートメントで警告をスローします。
[updated_users replaceObjectAtIndex:index withObject:YES];
これは確かに、YES は単純にオブジェクトではないためです。それはプリミティブです。とにかく、私はこれを行う必要があり、それを達成する方法についてアドバイスをいただければ幸いです.
ありがとう。
そうです、まさにそれです。NS*コンテナは、プリミティブ型ではなく、Objective-Cオブジェクトのみを格納できます。
NSNumberでラップすることにより、必要なことを達成できるはずです。
[updated_users replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]]
またはを使用@(YES)
しBOOL
てNSNumber
[updated_users replaceObjectAtIndex:index withObject:@(YES)]]
次に、boolValueを引き出すことができます。
BOOL mine = [[updated_users objectAtIndex:index] boolValue];
配列に有効なオブジェクトが含まれていると仮定します(cスタイルの配列ではありません)。
#define kNSTrue ((id) kCFBooleanTrue)
#define kNSFalse ((id) kCFBooleanFalse)
#define NSBool(x) ((x) ? kNSTrue : kNSFalse)
[updated_users replaceObjectAtIndex:index withObject:NSBool(YES)];
あなたはどちらかを保存することができますNSNumbers
:
[updated_users replaceObjectAtIndex:index
withObject:[NSNumber numberWithBool:YES]];
または、必要に応じてCアレイを使用します。
BOOL array[100];
array[31] = YES;
Georg が言ったように、C アレイを使用します。
BOOL myArray[10];
for (int i = 0; i < 10; i++){
myArray[i] = NO;
}
if (myArray[2]){
//do things;
}
Martijn、「myArray」はあなたが使用する名前で、georg の例では「array」です。
コレクションが大きい場合、または objc オブジェクトよりも高速にしたい場合は、CoreFoundation にあるCFBitVector
/型を試してください。これは、対応する NS には同梱されていないCFMutableBitVector
CF コレクション型の 1 つですが、必要に応じて objc クラスにすばやくラップできます。