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 />
网友评论