Iphone 要保存在服务器中的核心数据的唯一id

Iphone 要保存在服务器中的核心数据的唯一id,iphone,objective-c,core-data,Iphone,Objective C,Core Data,在我的应用程序中,我必须将我的NSManagedObject的值发送到服务器&从服务器获得成功结果后,我必须更新我的NSManagedObject中的一个字段 在服务器端,id字段是整数类型。核心数据中是否有任何可能的id,我可以将其发送到服务器并在iPhone中再次更新该值 NSManagedObjectID是否适用于此?NSManagedObjectID对于该目的来说足够独特,没有问题。但它只改变了它的价值一次——至少可能。也就是说,当一个瞬态对象成为持久对象时。因此,请确保在获取NSMan

在我的应用程序中,我必须将我的
NSManagedObject
的值发送到服务器&从服务器获得成功结果后,我必须更新我的
NSManagedObject
中的一个字段

在服务器端,id字段是整数类型。核心数据中是否有任何可能的id,我可以将其发送到服务器并在iPhone中再次更新该值


NSManagedObjectID
是否适用于此?

NSManagedObjectID对于该目的来说足够独特,没有问题。但它只改变了它的价值一次——至少可能。也就是说,当一个瞬态对象成为持久对象时。因此,请确保在获取NSManagedObject的ID之前保存上下文。

NSManagedObject
确实不适合此操作。它不是数字,也不会转换为数字形式。如果您在服务器上进行通信,那么用户可以从多个设备使用相同的服务器帐户吗?因为
NSManagedObjectID
仅在创建对象的设备上有效。无法创建托管对象并告诉它要使用的对象ID


如果您需要一个唯一的数字ID,您需要自己创建一个。向实体描述中添加数字属性,并将其用于您自己的ID值。核心数据不提供此功能,但您可以自己轻松完成。

NSManagedObjectID完全由核心数据控制。这意味着你几乎无法控制它。假设您使用来自服务器的数据从fresh创建数据库,则无法指示核心数据重用特定的NSManagedObjectId(因此您必须更新服务器上的ID)。在大多数情况下,NSManagedObjectID用于核心数据中

您应该使用自己独特的ID,使用以下代码很容易做到这一点:

NSString* uuid = [NSUUID new].UUIDString;
NSString* entityID = [[NSString alloc] initWithFormat: @"%@/%@", self.entity.name, uuid];

您可以直接使用uuid,也可以使用另一个ID方案,如
/YourEntityName/
或任何适合您的方案。

我个人使用created_at date来实现此目的。请参阅本文:-我会继续为您的对象创建一个新的唯一ID列并使用它。很遗憾,我的服务器字段是一个整数,我无法更改它。是吗可以从NSManagedObjective获取唯一的整数,我会说不。您不能让您的服务器提供唯一的ID吗?我的意思是,ID在服务器的数据中必须是唯一的,对吗?实际情况是我必须向服务器发送一些对象的数据,在得到响应后,我应该在coredata中更新它。我的要求是唯一标识该文件并更新我的本地