【问题标题】:NSArray indexOfObject returning nilNSArray indexOfObject 返回 nil
【发布时间】:2015-05-31 09:40:10
【问题描述】:

知道为什么我不能获得我确定存在于数组中的对象的索引吗?相反,我得到了零..

(lldb) po newItem
<ReceiptItem: 0x16a428b0>

(lldb) po self.items
<__NSArrayM 0x169bf0e0>(
<ReceiptItem: 0x16a428b0>
)

(lldb) po [self.items indexOfObject:newItem]
<nil>

谢谢

【问题讨论】:

  • indexOfObjectisEqual 发送到数组中的所有对象,直到一个isEqual 返回trueReceiptItem 可能会覆盖 isEqual 并始终返回 false - 是您编写的课程还是其他可能这样做的人?
  • @luk2302 有意思,我去看看
  • @Yossi as "luk" 问这个课是你写的吗?还是什么?
  • 试试这样 (lldb) p (NSInteger) [self.items indexOfObject:newItem];

标签: ios objective-c nsarray


【解决方案1】:

-indexOfObject: 返回NSUInteger 类型的整数,而不是对象引用。因此,您不应使用po(打印对象)调试器命令,而应使用p

它返回0,而不是nil,这意味着它在数组的第一个位置找到了对象。如果找不到对象,-indexOfObject: 将返回 NSNotFound

对应数组值等于anObject的最低索引。如果数组中没有一个对象等于anObject,则返回NSNotFound。

【讨论】:

    【解决方案2】:

    尝试这样做

    (lldb) p (NSUInteger)[self.items indexOfObject:newItems];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多