核心数据。检测同一个对象?

时间:2014-01-13 16:51:01

标签: ios core-data nsstring nsmanagedobject equality

我有两个相同类型的Core Data个对象。我通过不同的方式得到它们。

同时这些对象具有NSString字段(标识符)。

那么更好的是什么?

1)通过isEqual:

比较对象

2)通过==比较对象(一般情况下是否可能?)

3)通过isEqualToString:比较对象的字段?

2 个答案:

答案 0 :(得分:2)

基本上,永远不要在对象上使用==。始终使用isEqual:

如果您使用的是谓词,则可以在标识符上使用LIKE

答案 1 :(得分:0)

如果您正在尝试确定两个对象在语义上是否相等,并且您可以描述该类型的相等性,那么请使用isEqual。例如,如果您有Person类,则可以基于SSN(在美国)或同样唯一的东西定义相等性。

如果您正在尝试确定两个对象具有特定的共同点,但它并不一定意味着它们是相同的(例如,使用相同的Person示例,如果您想查明两个实例是否具有相同的姓氏)​​,使用isEqualToString比较属性:将此比较放入类型的isEqual是没有意义的。

如果您试图找出持久存储中有两个NSManagedObject实例,它们实际上是通过不同NSManagedObjectContexts获取的同一个对象,请使用objectID进行比较。