所有
我有一个存储在NSMutableArray中的字符串。当代码中的其他位置满足某个条件时,NSMutableArray(read,objectAtIndex:0)中FIRST的对象将被删除。删除之后,我需要将所有内容都移到索引中。这是我的例子:
/*
Index/Value
0 - one
1 - two
2 - three
3 - four
4 - five
5 - six
6 - seven
*/
//removes object...
[mArray removeObjectAtIndex:0];
//I am missing something here...
//I want the value of the array to be as follows:
/*
Index/Value
0 - two
1 - three
2 - four
3 - five
4 - six
5 - seven
*/
我错过了什么?
编辑:NSMutableArray存储在NSUserDefaults中。这可能导致这种情况无效吗?
EDIT2:因为它存储在NSUserDefaults中,所以它会变为不可变。查看接受的答案,了解正确的方法。详情请点击crashes my app [NSMutableArray1 removeAllObjects] iphone sdk
答案 0 :(得分:7)
你没有遗漏任何东西。在索引0处删除对象后,索引将完全相同。
答案 1 :(得分:6)
如果我正确理解了您的问题,那么您将NSMutableArray
存储到NSUserDefaults
,然后当您从NSUserDefaults
加载它时,它会在您尝试变异时抛出错误?
这是因为当您从NSUserDefaults
检索数组时,它将是一个NSArray
而不是NSMutableArray
的实例,因此您需要创建NSMutableArray
的实例才能使用
NSMutableArray *mArray = [[NSMutableArray alloc] initWithArray:myArrayFromNSUserDefaults];
答案 2 :(得分:0)
那应该有用。你在做这样的事吗?
NSMutableArray *mArray = [[NSMutableArray alloc]init];
[mArray addObject:@"one"];
[mArray addObject:@"two"];
[mArray addObject:@"three"];
[mArray removeObjectAtIndex:0];
NSLog(@"mArray at 0: %@",[mArray objectAtIndex:0]);