Sim*_*iwi 21 arrays null datasource uitableview ios
在我的应用程序中,我有一个UITableView和一些按钮,用户可以单击这些按钮,根据某些NSDate或int来将数组排序到订单.所以这是我尝试对UITableView进行排序的方法:
- (void)sortStats:(id)sender reloadData:(BOOL)dataBool {
NSSortDescriptor *descriptor = nil;
UIButton *clickedButton = (UIButton*)sender;
if (clickedButton.tag == 1) {
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:NO];
}
[self.cellArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
[[NSUserDefaults standardUserDefaults] setObject:self.cellArray forKey:@"cellArray"];
if (dataBool) {
[ivstatstableView reloadData];
}
[ivstatstableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
所以最初我只有没有reloadData参数的方法,因为看起来UITableView上的reloadData导致了崩溃.
这是控制台崩溃日志的内容:
因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** - [__ NSPlaceholderArray initWithObjects:count:]:尝试从对象[0]中插入nil对象
无论如何,这里有任何代码会导致这次崩溃吗?我真的希望在我的应用程序中使用此功能,我知道我已经接近修复它,但我不确定是什么导致了这个问题.
有任何想法吗?
Tim*_*ean 11
至少有一个地方可能会发生这种情况,也许还有其他地方.在您获取用户默认值内容的代码中,您不检查nil.所以不是这样的:
[self.cellArray addObjectsFromArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"array"]];
Run Code Online (Sandbox Code Playgroud)
你可能想试试这个:
NSArray *defaultCellArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"array"];
if (defaultCellArray) {
[self.cellArray addObjectsFromArray:defaultCellArray];
}
Run Code Online (Sandbox Code Playgroud)
initWithObjects失败的调用(根据您的错误消息)也可能嵌套在另一个调用中,可能在此调用中:
[self.cellArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
Run Code Online (Sandbox Code Playgroud)
如果您查看完整的调用堆栈,它会告诉您此调用是否正在进行后续调用initWithObjects并可能将其传递给它nil.例如,在您的情况下,nil如果clickedButton.tag尚未将值设置为1或2 ,则可以传入正在创建的数组.您可能需要添加其他else子句以帮助诊断问题:
if (clickedButton.tag == 1) {
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:NO];
} else if (clickedButton.tag == 2) {
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Score" ascending:NO];
} else {
NSLog(@"Unexpected error: Can't determine sort descriptor");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47261 次 |
| 最近记录: |