Ios 核心数据。检测同一物体?
我有两个相同类型的Ios 核心数据。检测同一物体?,ios,core-data,nsstring,nsmanagedobject,equality,Ios,Core Data,Nsstring,Nsmanagedobject,Equality,我有两个相同类型的核心数据对象。我通过不同的方式得到它们 同时,这些对象有一个NSString字段(标识符) 那么什么更好呢 1) 通过isEqual: 2) 通过==比较对象(一般可能吗?) 3) 通过IsequalString:?比较对象的字段基本上,不要在对象上使用=。始终使用isEqual: 如果您使用的是谓词,那么您可以在标识符上使用LIKE。如果您试图确定两个对象在语义上是否相等,并且您可以描述该类型的相等情况,那么请使用isEqual。例如,如果您有一个Person类,则可以基于S
核心数据对象。我通过不同的方式得到它们
同时,这些对象有一个NSString
字段(标识符)
那么什么更好呢
1) 通过isEqual:
2) 通过==
比较对象(一般可能吗?)
3) 通过IsequalString:
?比较对象的字段基本上,不要在对象上使用=
。始终使用isEqual:
如果您使用的是谓词,那么您可以在标识符上使用LIKE
。如果您试图确定两个对象在语义上是否相等,并且您可以描述该类型的相等情况,那么请使用isEqual。例如,如果您有一个Person类,则可以基于SSN(在美国)或其他同样独特的内容定义相等
如果您试图确定两个对象具有某些特定的共同点,但这并不一定意味着它们相等(例如,使用同一个人示例,如果您想了解两个实例是否具有相同的姓氏,请使用isEqualToString:)比较属性。将这种比较放在同一类型的同等条件下是没有意义的
如果您试图从持久性存储中找出两个NSManagedObject实例是否实际上是通过不同NSManagedObject上下文获取的同一对象,请使用objectID进行比较。如果对象具有相同的标识符,则只需进行比较即可。您已经获取了对象吗?这是谓词吗?我不会说“从不”。在某些情况下,我会比较指针以测试它是否是同一个对象。正如@Wain所说,在这种情况下,选项#1是正确的答案。让NSManagedObject
实现-isEqual:
回答这个问题。为什么“喜欢”?那就好了?作为模式。