开发者社区> 问答> 正文

unrecognized selector sent to instance 错?400报错

项目当中有一个浏览记录界面,数据来源于以下代码。
另有一清除记录按钮。

 _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地址。
小弟查阅资料,无法解决此问题~ 特来求助各大牛帮助~~

 

展开
收起
爱吃鱼的程序员 2020-06-08 11:49:33 466 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    查阅资料,似乎是调用了对象不具有的方法~但是这里我上面特地每一次都初始化了:_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

    2020-06-08 11:49:49
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载