ios – 变异方法发送到不可变对象

当我使用这种方法第一次它工作正常,但是当我打电话第二次我得到错误“mutating方法发送到不可变对象”.问题符合“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];

}

解决方法

由于NSUserDefaults的文档说:“从NSUserDefaults返回的值是不可变的,即使您将可变对象设置为该值.每当你想要更改从NSUserDefaults得到的集合,你必须获得不变版本,做一个mutablecopy,修改它,然后重新设置.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...