iOS可變陣列新增元素 以及可變陣列操作
今天在專案工程中想往可變陣列中新增從伺服器獲取的元素,我用了一下方法:
方法一:
[self.arrM_Data addObjectsFromArray:arr];
方法二:
[self.arrM_DataSource insertObjects:arr atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(self.arrM_DataSource.count, arr.count)]];
方法三:
for (int i=0; i<arr.count; i++) {
[self.arrM_DataSource insertObject:[arr objectAtIndex:i] atIndex:self.arrM_DataSource.count];
}
但是結果都是一樣的Crash ,報瞭如下錯誤(不知道是不是我的方法有問題):*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
*** First throw call stack:
(0x281d012 0x1e55e7e 0x281cdeb 0x289d9a5 0x27e1a90 0x27e1893 0x27e1480 0x9d848 0x1e696b0 0x36ecb 0x1e696b0 0x1896035 0x27a0f3f 0x27a096f 0x27c3734 0x27c2f44 0x27c2e1b 0x25717e3 0x2571668 0xd9d65c 0x235a 0x2265)
libc++abi.dylib: terminate called throwing an exception
最後翻看其他網友的解決方案 ,給順利解決了,貼上解決方案:
NSMutableArray *arrM = [[NSMutableArray alloc] init];
[arrM addObjectsFromArray:self.arrM_Data];
[arrM addObjectsFromArray:arr];
self.arrM_Data = arrM;
[arrM release];
array | 建立一個空陣列 |
+(id)arrayWithCapacity:size | 建立一個數組,指定容量為size |
-(id)initWithCapacity:size | 初始化一個新分配的陣列,指定容量為size |
-(void)addObject:obj | 將物件obj新增到陣列末尾 |
-(void)insertObject:obj atIndex:i | 將物件 obj 插入到索引為 i 的位置 |
-(void)replaceObject:obj atIndex:i | 將陣列中索引為 i 處的元素用obj 置換 |
-(void)removeObject:obj | 從陣列中刪除所有是 obj 的物件 |
-(void)removeObjectAtIndex:i | 從陣列中刪除索引為 i 的對像 |
-(void)sortUsingSelector:(SEL)selector | 用 selector 只是的比較方法將陣列排序 |