gba*_*aor 13 cocoa cocoa-touch objective-c ios
当我第一次使用这个方法它工作正常,但当我第二次调用它时,我得到错误"变异方法发送到不可变对象".问题与"addObject"命令一致.
-(IBAction) save: (id) sender{
NSMutableArray *placesT= [[NSUserDefaults standardUserDefaults] objectForKey:@"placesT"];
if (!placesT) {
    placesT=[[[NSMutableArray alloc] init] autorelease];
}
[placesT addObject: [NSString stringWithFormat:@"%@", tagF.text] ];
NSUserDefaults *tUD=[NSUserDefaults standardUserDefaults];
[tUD setObject:placesT forKey:@"placesT"];
[tUD synchronize];
[self dismissModalViewControllerAnimated:YES];
}
smo*_*gan 24
正如NSUserDefaults的文档所说:"即使您将可变对象设置为值,NSUserDefaults返回的值也是不可变的." 每当您想要更改从NSUserDefaults获得的集合时,您必须获取不可变版本,进行mutableCopy修改,然后再将其重新设置.
rck*_*nes 10
这是因为存储在NSUserDefaults中的对象不是mutableArray而是普通数组.
- (IBAction)save:(id)sender {
   NSMutableArray *placesT = nil;
   NSArray *tempArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"placesT"];
   if (tempArray) {
      placesT = [tempArray mutableCopy];
   } else {
      placesT = [[NSMutableArray alloc] init];
   }
   [placesT addObject:[NSString stringWithFormat:@"%@", tagF.text]];
   NSUserDefaults *tUD = [NSUserDefaults standardUserDefaults];
   [tUD setObject:placesT forKey:@"placesT"];
   [tUD synchronize];
   [self dismissModalViewControllerAnimated:YES];
   [placesT release];
}
| 归档时间: | 
 | 
| 查看次数: | 10022 次 | 
| 最近记录: |