【问题标题】:-[__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 对象,然后将它们放入一个数组中

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2014-08-05
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2021-01-04
      相关资源
      最近更新 更多