Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据。检测同一物体?_Ios_Core Data_Nsstring_Nsmanagedobject_Equality - Fatal编程技术网

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:
回答这个问题。为什么“喜欢”?那就好了?作为模式。