2013-10-25 41 views
1

這應該是相當容易的,可能我只是缺少一個很小的事情: 我有像陣列稱爲defaultImages替換對象的可變數組

NSMutableArray *defaultLetters; 

然後我需要添加字母(數組的長度則是42)

後來我試圖用另一個圖像替換陣列中的圖像之一。就像這樣:

[defaultLetters replaceObjectAtIndex:0 withObject:croppedPhoto]; 

,但我得到一個錯誤說: 「 - [__ NSArrayI replaceObjectAtIndex:withObject:]:發送到實例0x180ae190無法識別的選擇」 是有步驟我失蹤?

+0

請告訴我們,你如何給'defaultLetters'指定什麼 – vikingosegundo

回答

7

我想你賦值這樣

defaultLetters = anotherMutableArray; 

如果你喜歡這一點,那麼請更換如下..

defaultLetters = [anotherMutableArray mutableCopy]; 

亞特你可以在陣列中的替換對象

[defaultLetters replaceObjectAtIndex:0 withObject:croppedPhoto]; 

試試這個..因爲如果你直接分配你不能插入或刪除。

+0

謝謝!作品! mutableCopy是關鍵... – suMi

+1

@suMi:好的,你直接分配你不能插入或刪除.. – TamilKing

7

您爲defaultLetters指定了NSArray對象,而不是NSMutableArray

__NSArrayI是NSArray的私有子類。 I代表不可變的。

What is __NSArrayI and __NSArrayM? How to convert to NSArray?


,如果你不能告訴是肯定的,如果它是一個NSArray或NSMutableArray裏要分配,你隨時可以測試。

if(![defaultLetters respondsToSelector:@selector(replaceObjectAtIndex:withObject:)]){ 
    defaultLetters = [defaultLetters mutableCopy]; 
} 

但是這可能表明您的代碼中存在架構問題,因爲您應該知道您正在處理的對象是什麼。