如何用字符串唯一标识nsmangedobject?

Der*_*ick 3 iphone core-data nsurl nsstring nsmanagedobject

我正在使用核心数据和区域监控.区分受监视区域的唯一方法是使用NSString作为标识符.我喜欢使用NSManagedObjectID,但我无法让它工作.

我尝试过的:

NSURL *objURL = [managedObjectID URIRepresentation];
NSError *err;
NSString *identifier = [NSString stringWithContentsOfURL:myURL
                                                encoding:NSASCIIStringEncoding
                                                   error:&err];
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

The operation couldn’t be completed. (Cocoa error 256.)
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?或者我做错了什么?

Yuj*_*uji 9

你不应该得到的URI 的内容NSManagedObjectID.stringWithContentsOfURL:encoding:error:尝试加载URI指向的资源; 它使用适当的操作,具体取决于URI是否httpfile等等.但是它不知道如何处理NSManagedObjectIDURI,而且它不是你想要做的.

相反,我猜你想做的是

 NSString*identifier=[objURL absoluteString];
Run Code Online (Sandbox Code Playgroud)

这给出了URL的字符串表示.

我将添加Marcus的评论,以便每个人都注意到:

请注意,objectID可以并且确实会发生更改,尤其是在发生迁移时.不要依赖该值在应用程序的一次启动和下一次启动之间保持一致.

  • 请注意,objectID可以并且确实会发生更改,尤其是在发生迁移时.不要依赖该值在应用程序的一次启动和下一次启动之间保持一致. (8认同)