我正在尝试将对象添加到nsuserdefault中,但是我遇到了这个崩溃 “[__ NSCFArray insertObject:atIndex:]:发送到不可变对象的mutating方法” 它崩溃在这条线上: [currentFav addObject:incomingBabe];
我不知道它为什么会崩溃,它正在处理我的其他项目。
这是我的代码
-(IBAction)favorite {
NSUserDefaults *standardDefault = [NSUserDefaults standardUserDefaults];
NSMutableArray *currentFav = [[NSUserDefaults standardUserDefaults]objectForKey:@"fav"];
NSLog(@"strings stored = %@",currentFav);
NSMutableArray *newFav = [NSMutableArray arrayWithObject:[NSString stringWithFormat:@"bikini%02d.jpeg",self.currentNumber]];
if (currentFav == NULL){
currentFav = [[NSMutableArray alloc]init];
}
for(NSString *incomingBabe in newFav){
BOOL hasStringAlready = NO;
for(NSString *currentFavorite in currentFav){
if([currentFavorite isEqualToString:incomingBabe]){
hasStringAlready = YES;
NSLog(@"has string already");
break;
}
}
if (!hasStringAlready) {
[currentFav addObject:incomingBabe];
hasStringAlready = YES;
}
}
[standardDefault setObject:currentFav forKey:@"fav"];
[standardDefault synchronize];
}
答案 0 :(得分:2)
基本上它说你试图在NSArray上使用NSMutableArray中的方法。
这是因为“NSUserDefaults返回的值是不可变的,即使您将可变对象设置为值。”
NSMutableArray *currentFav = [[NSUserDefaults standardUserDefaults]objectForKey:@"fav"];
将返回一个数组,而不是可变数组。你应该制作一份可变的副本。
NSMutableArray *currentFav = [[[NSUserDefaults standardUserDefaults]objectForKey:@"fav"] mutableCopy];
答案 1 :(得分:0)
您可以从1楼了解您的问题。您可以使用他的方法来解决您的问题,或者像这样:
NSMutableArray *currentFav = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults]objectForKey:@"fav"]];