iSqual并不总是适合NSINDEXPATH?我可以用什么?
-
05-10-2019 - |
题
我有一些代码依赖于比较两个NSINDEXPATH并根据其平等或缺乏(使用-isequal)执行不同的代码。大多数时候它正常工作,但有时却没有。我已经使用了调试器控制台在代码执行过程中测试两个INDEXPATH,它们看起来与我相同。
这是代码:
- (BOOL)selectedStreetIsSameAsLastSelectedStreet
{
return [self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet];
}
这是执行代码期间的输出:
(gdb) po self.indexPathOfSelectedStreet
<NSIndexPath 0x60a0770> 2 indexes [26, 1]
(gdb) po self.previousObject.indexPathOfSelectedStreet
<NSIndexPath 0x55b4f70> 2 indexes [26, 1]
(gdb) p (BOOL)[self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet]
$2 = 0 '\000'
我是做错了什么,还是有其他方法可以可靠地测试两个NSINDEXPATH的平等?
解决方案
从iOS 5开始,您可以使用 isEqual:
(看评论)
尝试
[indexPath1 compare: indexPath2] == NSOrderedSame
.
也许您在 NSIndexPath
. 。如果您尝试创建一个新的 NSIndexPath
有了已经存在的路径,您应该得到那条路。所以 isEqual:
可能只是比较指针,而不是存储的实际索引。
不隶属于 StackOverflow