なぜBAD_ACCESSエラーが発生するのですか?NSDictionaryに異なる種類のオブジェクトを値として含めることはできますか?
別のNSDictionaryを含むNSDictionaryの値として、さまざまな種類のオブジェクトを使用できますか?
なぜBAD_ACCESSエラーが発生するのですか?NSDictionaryに異なる種類のオブジェクトを値として含めることはできますか?
別のNSDictionaryを含むNSDictionaryの値として、さまざまな種類のオブジェクトを使用できますか?
あなたはNSDictionary
へオブジェクトの任意の型を置くことができます。だから@"fred"
はOKですが、1
は整数ではないため、オブジェクトではありません。あなたは辞書に番号を入れたい場合は、NSNumber
でラップ:
NSDictionary *header = { @"title": @"fred", @"count": @1 };
あなたはそれを持っていません。番号1はプリミティブであり、NSArrayオブジェクトはオブジェクトのみを保持できます。 "1"のNSNumberを作成し、それを保存します。
NSDictionary
は、それだけにObjective-Cのオブジェクトを含むことができる(例えばNSString
とNSArray
ように)、それはint
、float
、又はchar*
ようなプリミティブ型を含めることはできません。これらの制約があると、異種の辞書は完全に合法です。
あなたは、このようなキーまたは値として1
として数を含める場合は、あなたがNSNumber
でそれをラップする必要があります。
NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys:
@"fred", @"title",
[NSNumber numberWithInt:1], @"count",
nil];
唯一の要件は、それがオブジェクトであるです。コード内でオブジェクトを適切に処理するのはあなた次第ですが、おそらくキーに基づいてオブジェクトの型を追跡できます。
1はオブジェクトではありません。数字を辞書に入れる場合は、数値をNSNumberに変換したい場合があります。
興味深い。私はすべてがオブジェクトであるC#に慣れています。ありがとう。 – ChrisP