2010-11-21 120 views
9

這可能是一個簡單的問題,但有人會很高興能夠給我一個提示什麼是錯的,在以下情況下,我只是不明白。我有一個NSMutableArray「playerArray」,它具有對象「ZERO」,「ONE」,「TWO」,THREE「NSMutableArray removeObjectAtIndex導致錯誤

我試圖刪除」行「對象,但它不起作用。因此,它返回一個不可改變的陣列作爲例外似乎越來越拋出,因爲它不響應removeObjectAtIndex

NSUInteger row = 1; // [indexPath row]; 
NSLog(@"playerArray:%@", playerArray); 
NSLog(@"row: %i", row); 
[playerArray removeObjectAtIndex:row]; 

結果是:

playerArray :(
ZERO,
ONE,
TWO,
THREE

2010-11-21 20:58:46.681 FamQuiz_v2 [2166:207]行:1
2010-11-21 20:58:46.682 FamQuiz_v2 [2166:207] - [__ NSArrayI removeObjectAtIndex:]:無法識別的選擇發送到實例0x5e3b9a0
2010-11-21 20:58:46.683 FamQuiz_v2 [2166:207] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因:' - [__ NSArrayI removeObjectAtIndex:]:無法識別的選擇器發送到實例0x5e3b9a0'

+0

顯示。 – bbum 2010-11-21 21:18:40

回答

19

它看起來像你的數組實際上不是一個NSMutableArray。通過登錄類名進行驗證:

NSLog(NSStringFromClass([playerArray class])); 

,或者與檢查:在您創建playerArray

if ([playerArray isKindOfClass: [NSMutableArray class]]) 
{ 
... 
} 
+0

上面運行NSLog後,類是:__NSArrayI ??有人可以解釋這可能是怎麼回事?在@interface中我有「NSMutableArray * playerArray;」和「@property(nonatomic,retain)NSMutableArray * playerArray;」。 – PeterK 2010-11-21 20:48:08

+0

...以及我如何解決這個問題? – PeterK 2010-11-21 20:48:29

+2

那麼,你是如何實例化它的?看這裏。 – d11wtq 2010-11-21 20:59:28

9

錯誤消息指示playerArray是NSArray的實例,而不是NSMutableArray。您不能在NSArray的實例上調用removeObjectAtIndex。

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance