我正在尝试删除索引1处的对象,但代码将无法编译。
我也不明白这一点:我将“iphone”字符串设置为索引0,然后将其从索引0中删除,但输出仍然首先显示“iphone”。任何人都可以向我解释一下吗?
int main (int argc, const char * argv[])
{
@autoreleasepool {
//create three string objetc
NSString *banana = @"This is banana";
NSString *apple = @"This is apple";
NSString *iphone =@"This is iPhone";
//create an empty array
NSMutableArray *itemList = [NSMutableArray array];
// add the item to the array
[itemList addObject:banana];
[itemList addObject:apple];
// put the iphone to the at first
[itemList insertObject:iphone atIndex:0];
for (NSString *l in itemList) {
NSLog(@"The Item in the list is %@",l);
}
[itemList removeObject:0];
[itemList removeObject:1];// this is not allow it
NSLog(@"now the first item in the list is %@",[itemList objectAtIndex:0]);
NSLog(@"now the second time in the list is %@",[itemList objectAtIndex:1]);
NSLog(@"now the thrid item in the list is %@",[itemList objectAtIndex:2]);
}
return 0;
}
答案 0 :(得分:9)
那应该是
[itemList removeObjectAtIndex:0];
[itemList removeObjectAtIndex:1];
NSMutableArray
的文档中明确说明了此方法。在提出问题之前,请务必查阅正确的文档。
答案 1 :(得分:2)
方法removeObject:(id)obj
不适用于索引,但适用于实际对象。
你应该使用
[list removeObjectAtIndex:0];
[list removeObjectAtIndex:1];
如果你想知道为什么它适用于0
,我想因为0 == NULL == nil
是一个指向空对象的指针,所以它被解释为nil对象而不是索引(它不会表现就像你期望的那样。)
答案 2 :(得分:2)
您正在使用removeObject而不是removeObjectAtIndex。
答案 3 :(得分:2)