簡體   English   中英

“無法識別的選擇器發送到實例”異常錯誤

[英]"unrecognized selector sent to instance" exception error

我已經閱讀了所有“無法識別的選擇器發送到實例”的答案,但它們似乎不適用於我的情況。

我已經設置了一個 NSMutableDictionary 這樣的......

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

然后在稍后的代碼中我試圖添加另一個對象/鍵,用這個...

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

但是我在那條線上遇到了一個例外,其中...

-[__NSDictionaryI setObject:forKey:]: 無法識別的選擇器發送到實例

不能像這樣添加另一個鍵/值對嗎?

編輯

一個簡單的錯誤,我只是想制作一個 NSDictionary 而不是 NSMutableDictionary! 無論如何,感謝您的回答。

那是因為您初始化了一個不具有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 中,變量名應該以小寫字母開頭。

為了能夠更改字典的內容,您需要制作NSMutableDictionary ,而不是不可變的NSDictionary

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM