我正在使用核心数据和区域监控。区分受监视区域的唯一方法是使用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.)
有更好的方法吗?或者我做错了什么?
答案 0 :(得分:9)
您不应该获取的内容 NSManagedObjectID
的URI。 stringWithContentsOfURL:encoding:error:
尝试加载URI指向的资源;它根据URI是http
还是file
等使用适当的操作。但是它不知道如何处理NSManagedObjectID
URI,并且它不是你想要做的事情
相反,我想你想要做的是
NSString*identifier=[objURL absoluteString];
这给出了URL的字符串表示。
我会添加Marcus的评论,以便每个人都注意到:
请注意,objectID可以并且确实会发生更改,尤其是在发生迁移时。不要依赖该值在应用程序的一次启动和下一次启动之间保持一致。