我使用[items indexOfObject:items.lastObject]
来获取最后一个索引,但是此代码返回了nil
。为什么会这样?
答案 0 :(得分:2)
数组中的第一个和最后一个对象都是使用“固定空间”系统项创建的条形按钮项。
调用indexOfObject:
的结果是0
,而不是nil
。这意味着可以在索引0
上找到该对象。 indexOfObject:
无法返回nil
。如果找不到对象,它将返回特殊值NSNotFound
,它是-1
的无符号值。
摘自indexOfObject:
的文档:
从索引
0
开始,将数组的每个元素作为参数传递给发送到anObject的isEqual:
消息,直到找到匹配项或到达数组末尾为止。如果isEqual:
(在NSObject
协议中声明)返回YES
,则认为对象相等。
如果使用同一系统项目(以及可能还有其他一些属性)创建了两个条形按钮项目实例,则UIBarButtonItem isEqual:
的实现将返回YES
。
indexOfObject:
不是基于对象的实例,而是基于isEqual:
。
如果要基于对象的标识(其地址)而不是isEqual:
查找对象的索引,请使用indexOfObjectIdenticalTo:
。
p [items indexOfObjectIdenticalTo:items.lastObject]
将给您6
而不是0
。