美文网首页
IOS开发过程中遇见的报错及解决方法汇总

IOS开发过程中遇见的报错及解决方法汇总

作者: Felix灬泡泡 | 来源:发表于2016-11-20 17:19 被阅读0次
1、报错:Application tried to present a nil modal view controller on target XXXX.
  • 描述:试图presentViewController时报错。
  • 原因:将要present出的ViewController为nil。
  • 解决办法:初始化ViewController,�如果该ViewController是通过SB创建,请保证Identifier等相关信息填写正确!
2、报错:unable to dequeue a cell with identifier identifierCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard.
  • 描述:在使用UITableViewController时,运行报错。
  • 原因:未给tableView注册identifier。
  • 解决办法:在viewDidLoad方法中添加:
[self.tableView registerNib:[UINib nibWithNibName:@"identifierTableViewCell" bundle:nil] forCellReuseIdentifier:@"identifierCell"];//identifierTableViewCell为Cell所在的XIB文件名

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"identifierCell"];
3、报错:Warning: Attempt to present <UIAlertController: XXX> on <XXXTableViewController: XXX> which is already presenting (null).
  • 描述:在XXXTableViewController中,已经present出了RMPickerViewController,打算点击确定按钮后再present出UIAlertController时报错。
  • 原因:该控制器已经present出了RMPickerViewController,不能present新的。
  • 解决办法:在新present的代码之前加上:
[已经present出的ViewController dismissViewControllerAnimated:YES completion:nil];

当然,最好的写法是通过如下方法找到present出来的控制器,再去dismiss。

[UIApplication sharedApplication].keyWindow.rootViewController.presentedViewController:
4、报错:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'.
  • 描述:取出NSUserDefaults为NSMutableDictionary后,修改其的值然后再以同样的Key存入NSUserDefaults时报错。
  • 原因:NSUserDefaults只能对如下几类数据进行存取(NSString、NSNumber、NSDate、NSArray、NSDictionary)(其它可转换为NSDate进行存取)!
  • 解决办法:取出的NSUserDefaults存为NSDictionary,然后再申明一个NSMutableDictionary使用dictionaryWithDictionary方法。修改NSMutableDictionary的值,再以同样的Key值存入NSUserDefaults成功。
    同理注意:
    以下写法会报错:
NSMutableArray *mArr = [[NSUserDefaults standardUserDefaults] objectForKey:@"arrKey"];
[mArr addObject:@"object"];

 NSMutableDictionary *mDic = [[NSUserDefaults standardUserDefaults] objectForKey:@"dicKey"];
[mDic setObject:@"value" forKey:@"key"];

不会报错姿势:

NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:@"arrKey"];
NSMutableArray *mArr = [NSMutableArray arrayWithArray:arr];
[mArr addObject:@"object"];  

 NSDictionary *dic = [[NSUserDefaults standardUserDefaults] objectForKey:@"dicKey"];
NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithDictionary:dic];
[mDic setObject:@"value" forKey:@"key"];

<br />

本文为本人开发过程中遇见的报错以及解决办法,本人为小白,所以有些原因可能写得不正确或解决办法不是最优。
如有错误,欢迎指正!
继续更新中......

相关文章

网友评论

      本文标题:IOS开发过程中遇见的报错及解决方法汇总

      本文链接:https://www.haomeiwen.com/subject/dbrypttx.html