【问题标题】:-[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'-[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象'
【发布时间】:2012-10-30 11:13:27
【问题描述】:
我正在使用 UITableview 我在 tableview 单元格上显示图像、标题、日期和位置名称。当我单击 tableview 单元格时,它将导航到详细信息视图。在连续处理 tableview 到详细信息视图中,反之亦然。经过一些导航当我点击我的 UITableview 单元格时,我的应用程序崩溃了。
【问题讨论】:
标签:
iphone
ios
xcode
uitableview
【解决方案1】:
NSArray 旨在为每个元素保存对象——nil 在任何NSArray 索引中都不是有效值。
错误表明您的程序正在创建一个长度非零的数组,并且第一个元素为 nil。
预感:你已经声明了一个字面量,相当于:
NSNumber * n = nil;
NSArray * a = @[n]; // << runtime error creating this array
当然,您的程序也可以直接调用-[NSArray initWithObjects:count:]。
【解决方案2】:
1- 定义一个安全宏
#define $safeArgs(...) [NSOrderedSet orderedSetWithObjects:__VA_ARGS__, nil]
2- 然后使用
NSArray *array = [$safeArgs("objectsToSanitize") allObjects];
这将使用一个集合来清理你的 nil 对象,然后将它们放入一个数组中