我在UITableViewController内的Table View上实现了UIRefreshControl。今天我的朋友(第一个测试人员)正在使用该应用程序,他能够通过拉动刷新而使其崩溃,同时它很清爽,再次快速拉动它几次。我知道这不是常见的事情,但我可以很容易地重新创建它。我猜测我实现刷新控件的方式有问题,因为我尝试使用Gmail应用程序重新创建它并且它没有崩溃。
这是我得到的错误:
[1008:907] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSCFConstantString stringByAppendingString:]:nil参数' * 第一次抛出调用堆栈: (0x343f32a3 0x3c08d97f 0x343f31c5 0x34c5c5e1 0x496b5 0x3624654d 0x3622b313 0x362427cf 0x361fe803 0x35fa8d8b 0x35fa8929 0x35fa985d 0x35fa9243 0x35fa9051 0x35fa8eb1 0x343c86cd 0x343c69c1 0x343c6d17 0x34339ebd 0x34339d49 0x37efb2eb 0x3624f301 0x46da5 0x3c4c4b20) libc ++ abi.dylib:terminate调用抛出异常 (lldb)
在ViewDidLoad
下// pull to refresh
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(updateTableView:) forControlEvents:UIControlEventValueChanged];
[self setRefreshControl:refreshControl];
这是updateTableView方法:
- (void)updateTableView:(id)sender {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM d, h:mm:ss a"];
NSString *lastUpdated = [NSString stringWithFormat:@"Last updated on %@", [formatter stringFromDate:[NSDate date]]];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:lastUpdated];
if(topOptions.selectedSegmentIndex == 0) {
//fetch the feed
_feed = [[FetchData alloc] initFromURLWithString:@"some json file" completion:^(JSONModel *model, JSONModelError *err) {
[self.tableView reloadData];
[(UIRefreshControl *)sender endRefreshing];
}];
} else if (topOptions.selectedSegmentIndex == 1) {
//fetch the feed
_feed = [[FetchData alloc] initFromURLWithString:@"another json file" completion:^(JSONModel *model, JSONModelError *err) {
[self.tableView reloadData];
[(UIRefreshControl *)sender endRefreshing];
}];
}
}
我猜测(来自nil参数)通过多次执行刷新请求它到达了无法找到值的点?我对此很新,所以任何想法都非常感激。
如果您需要代码的任何其他部分,请告诉我。