gpt4 book ai didi

ios - 试图从对象 [0] 中插入 nil 对象?

转载 作者:IT王子 更新时间:2023-10-29 08:03:49 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个 UITableView 和一些按钮,用户可以单击这些按钮以根据某些 NSDate 或整数对数组进行排序。所以这是我尝试对 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];
}

所以最初我只是使用没有 reloadData 参数的方法,因为 UITableView 上的 reloadData 似乎导致了崩溃。

控制台崩溃日志是这样的:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'

无论如何,这里是否有任何代码会导致此崩溃?我真的很想让这个功能在我的应用程序中运行,我知道我即将修复它,但我不确定是什么导致了这个问题。

有什么想法吗?

最佳答案

至少有一个地方可能会发生这种情况,也许还有其他地方。在获取用户默认值内容的代码中,您不检查 nil。所以不是这个:

[self.cellArray addObjectsFromArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"array"]];

你可能想试试这个:

NSArray *defaultCellArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"array"];
if (defaultCellArray) {
[self.cellArray addObjectsFromArray:defaultCellArray];
}

也有可能失败的 initWithObjects 调用(根据您的错误消息)嵌套在另一个调用中,也许在这个调用中:

[self.cellArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];

如果您查看完整的调用堆栈,它会告诉您此调用是否正在对 initWithObjects 进行后续调用并可能向其传递 nil。例如,在您的情况下,如果 clickedButton.tag 尚未设置为 1 或 2 的值,您将在 nil 中传递您正在创建的数组。您可能想要添加一个额外的 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");
}

关于ios - 试图从对象 [0] 中插入 nil 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com