项目当中有一个浏览记录界面,数据来源于以下代码。
另有一清除记录按钮。
_userArr=[[NSMutableArray alloc]init];
if ([[NSUserDefaults standardUserDefaults]objectForKey:@"key"]) {
_userArr=[[NSUserDefaults standardUserDefaults]objectForKey:@"key"];
}
NSMutableArray *arr=[[NSMutableArray alloc]init];
arr=[[NSUserDefaults standardUserDefaults]objectForKey:@"DataArr"];
[userArr insertObject:arr atIndex:0];(这里报错)
[[NSUserDefaultsstandardUserDefaults]setObject:_userArrforKey:@"massageDataArr";
[myTableView reloadData];
以上是数据来源代码。后面是清除按钮代码:
[[NSUserDefaults standardUserDefaults]setObject:nil forKey:@"key"];
[myTableView reloadData];
清除数据前,没有任何问题。
点击清除数据后,第一次添加记录数据,正常运行。
第二次添加记录数据,程序崩溃。
崩溃代码为:[userArr insertObject:arr atIndex:0];
崩溃原因为:unrecognized selector sent to instance 0x608000012890,
内存地址为userArr地址。
小弟查阅资料,无法解决此问题~ 特来求助各大牛帮助~~
查阅资料,似乎是调用了对象不具有的方法~但是这里我上面特地每一次都初始化了:_userArr=[[NSMutableArrayalloc]init];
但后面还是报错。
执行:[[NSUserDefaultsstandardUserDefaults]setObject:nilforKey:@"key"];以后,
第一次添加记录数据,并没有进入:
_userArr=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"key"];
然后第一次添加记录数据没任何问题。
第二次进入判定方法,执行:
_userArr=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"key"];
然后就在后面的代码报错~:
[userArrinsertObject:arratIndex:0];
真的是不明所以啊。。。。
问题解决~
解决办法:
将代码:_userArr=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"key"];
换成了:
_userArr=[[NSMutableArrayalloc]initWithArray:[[NSUserDefaultsstandardUserDefaults]objectForKey:@"keyr"]];
为何这样能解决问题~还不知道!!
待我研究后来解答。
_userArr=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"key"];这句话可能返回的是一个不可变的NSArray,没有insertObject这个方法就会报错unrecognizedselectorsenttoinstance
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。