Contacts(TableViewController)报错总
2017-07-24 本文已影响7人
Edie小哪吒
1. mock网络问题
问题:mock网络的JSON数据无法获取
- 提示:mock请求出错:mock....7777
- 原因:mock请求时获取ip地址失败。
- 修改方法:serviceProvider脚本中的获取ip方法语句改为
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
2.TableViewCell
问题:返回cell为nil
-
出错提示如图:
错误1.png
Assertion failure in -[UITableView configureCellForDisplay:forIndexPath:]......
-
出错原因:没有register cell 的 identifier@“getContact"
Because cellForRowAtIndexPath is returning a nil value and then configureCellForDisplay is expecting a UITableViewCell. The storyboard or XIB does not have a cell defined with the cell identifier you specified. Better check the spelling of identifier. -
解决:
register方法:UITableView registerClass:
- (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);
tableView调用方法register:
[self.tableView registerClass:[ContactsTableViewCell class] forCellReuseIdentifier:@"ContactsTableViewCell"];
提示:register应该在tableView初始化之后:
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
[self.tableView registerClass:[ContactsTableViewCell class] forCellReuseIdentifier:@"ContactsTableViewCell"];
问题:cell添加到父视图
- 出错提示:failure in configureCellForDisplay:forIndexPath....
- 出错原因:cell的view(checkContainerView)没有作为子视图添加到父视图contentView中。同时添加约束要在addSubview之后,否则会导致崩溃。
- 解决:在子视图创建后,addSubView
_checkContainerView = [UIView new];
[self.contentView addSubview:_checkContainerView];
问题:cell创建失败
- 出错提示:failure in configureCellForDisplay:forIndexPath....
- 出错原因:方法缺少参数:forIndexPath
- 解决:补上参数
ContactsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactsTableViewCell" forIndexPath:indexPath];
3、数据类型
问题:数据类型出错
-
出错提示failure in -[_NSCFNumber methodSignatureForSelector:]
-
出错原因:返回的数据类型与控件所需要的数据类型不符,此处为JSON中数据类型为Number,但绑定的控件所需的数据类型是NSString。(提示:JSON文件中的string 要加双引号。)
-
解决:把 JSON中认定是string的value加上双引号。
{"contactName": "Tom2",
"contactId": "1473490800002",
"contactNumber": "1473307200002",
"contactAdd":"杭州"}