1

「インスタンスに送信された認識されないセレクター」の回答をすべて読みましたが、私の状況には当てはまらないようです。

このように NSMutableDictionary を設定しました...

  NSMutableDictionary *ObjectDynamic = [NSDictionary dictionaryWithObjectsAndKeys:pObject, @"pFObject",tObject, @"tFObject",nil];

そして、コードの後の時点で、これを使用して別のオブジェクト/キーを追加しようとしています...

[ObjectDynamic setObject:mySprite forKey:@"pSObject"];

しかし、その行で例外が発生しています...

-[__NSDictionaryI setObject:forKey:]: 認識されないセレクターがインスタンスに送信されました

そのような別のキーと値のペアを追加することはできませんか?

編集

単純な間違いです。NSMutableDictionary ではなく NSDictionary を作成しようとしていただけです。とにかく答えてくれてありがとう。

4

2 に答える 2

5

setObject:forKey:これは、メソッドを持たない不変の NSDictionary を初期化するためです。代わりに変更可能なものを初期化してください:

NSMutableDictionary *ObjectDynamic = [NSMutableDictionary 
    dictionaryWithObjectsAndKeys:pObject, @"pFObject",tObject, @"tFObject",nil];

Xcode 4.4以降、新しい辞書リテラルを使用して、不変の辞書を非常に簡単に初期化し、mutableCopy.

NSMutableDictionary *objectDynamic = [@{@"pFObject" : pObject, 
                                        @"tFObject" : tObject} mutableCopy];

Objective-C では、変数名を小文字で始める必要があることに注意してください。

于 2012-11-08T14:25:54.430 に答える
1

辞書の内容を変更できるようにするNSMutableDictionaryには、 immutable ではなくを作成する必要がありNSDictionaryます。

NSMutableDictionary *ObjectDynamic = [NSMutableDictionary // <<== Here
    dictionaryWithObjectsAndKeys:pObject, @"pFObject",tObject, @"tFObject",nil
];
于 2012-11-08T14:25:46.257 に答える