我有两个相同类型的Core Data
个对象。我通过不同的方式得到它们。
同时这些对象具有NSString
字段(标识符)。
那么更好的是什么?
1)通过isEqual:
2)通过==
比较对象(一般情况下是否可能?)
3)通过isEqualToString:
比较对象的字段?
答案 0 :(得分:2)
基本上,永远不要在对象上使用==
。始终使用isEqual:
。
如果您使用的是谓词,则可以在标识符上使用LIKE
。
答案 1 :(得分:0)
如果您正在尝试确定两个对象在语义上是否相等,并且您可以描述该类型的相等性,那么请使用isEqual。例如,如果您有Person类,则可以基于SSN(在美国)或同样唯一的东西定义相等性。
如果您正在尝试确定两个对象具有特定的共同点,但它并不一定意味着它们是相同的(例如,使用相同的Person示例,如果您想查明两个实例是否具有相同的姓氏),使用isEqualToString比较属性:将此比较放入类型的isEqual是没有意义的。
如果您试图找出持久存储中有两个NSManagedObject实例,它们实际上是通过不同NSManagedObjectContexts获取的同一个对象,请使用objectID进行比较。