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

时间:2010-08-19 06:37:24

标签: iphone core-data nsstring nsurl nsmanagedobject

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

我尝试了什么:

NSURL *objURL = [managedObjectID URIRepresentation];
NSError *err;
NSString *identifier = [NSString stringWithContentsOfURL:myURL
                                                encoding:NSASCIIStringEncoding
                                                   error:&err];

我得到的错误是:

The operation couldn’t be completed. (Cocoa error 256.)

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

1 个答案:

答案 0 :(得分:9)

您不应该获取的内容 NSManagedObjectID的URI。 stringWithContentsOfURL:encoding:error:尝试加载URI指向的资源;它根据URI是http还是file等使用适当的操作。但是它不知道如何处理NSManagedObjectID URI,并且它不是你想要做的事情

相反,我想你想要做的是

 NSString*identifier=[objURL absoluteString];

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

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

  

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