我使用下面的代碼來檢查,如果它取出前一個對象是否存在:NSArray的removeObjectAtIndex錯誤
if(titlescopy.count >= i)
{
if([[titlescopy objectAtIndex:i] isKindOfClass:[NSString class]])
{
[titlescopy removeObjectAtIndex:i];
}
}
不過,我得到這個錯誤:
* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]' * First throw call stack: (0x365a56c3 0x3881e97f 0x364f1055 0x494b 0x37fdb8d5 0x37fe7d75 0x37fe7a81 0x38001ddd 0x38001b97 0x172bd 0x3805f8e5 0x3805f897 0x3805f875 0x3805f12b 0x3805f621 0x37f87d29 0x37f74f29 0x37f74843 0x34ea25d3 0x34ea2203 0x3657a593 0x3657a537 0x365793b9 0x364ec39d 0x364ec229 0x34ea131b 0x37fc88f9 0x283b 0x2798) libc++abi.dylib: terminate called throwing an exception (lldb)
爲什麼這是否發生?我正在使用的代碼應該在試圖刪除它之前檢查對象是否存在,顯然不是。
謝謝!
注意,這是極爲奇數要使用'isKindOfClass:'以這種方式來過濾數組內容。一般來說,使用'isKindOfClass:'代表弱結構。 – bbum