ios:NSArray containsObject:NSIndexPath

时间:2014-10-18 20:45:35

标签: ios objective-c nsarray

我对NSArray containsObject方法有点困惑。此方法是否将指针与对象或其确切内容进行比较?更具体一点:我有一个NSIndexPath对象的数组,之前在某处创建,现在我想检查,如果有一个NSIndexPath对象,其中row = 2且section = 1.如果我写下面的代码,它会工作吗?

[[self arrayOfPathes] containsObject: [NSIndexPath indexPathForItem: 2 inSection: 1]];

我已经测试了那段代码,它对我有用,但我之前对指针进行比较而不是对象的内容有一些不好的经验(顺便说一下,那段代码对我有用,并且被批准用于应用程序商店,但是很晚许多用户报告了它所犯的错误。)

1 个答案:

答案 0 :(得分:4)

您是否尝试在NSArray方法containsObject中查找文档?它说:

  

此方法确定aObject是否存在于数组中   向每个数组的对象发送一个isEqual:消息(和   将anObject作为参数传递给每个isEqual:message)。

因此,如果有问题的对象实现isEqual来比较对象的设置而不是比较地址,那么它将起作用。

NSIndexPath上的文档不会告诉您它是否实现了isEqual方法的自定义实现,但我猜它确实如此。