NSURL转换为NSData(Cocoa错误256.)

use*_*500 5 iphone core-data ios

我需要序列化我的NSURL.

object是NSManagedObject的类型.

NSURL *objectURIRepresentation = [[object objectID] URIRepresentation];
NSError *error = nil;
NSData *objectIDData = [NSData dataWithContentsOfURL:objectURIRepresentation options:NSDataReadingMapped error:&error];
Run Code Online (Sandbox Code Playgroud)

我得到错误:(可可错误256.).有任何想法吗?有些东西告诉我,使用dataWithContentsOfURL:不是好主意.

更新

还有一个问题被错误地作为评论:

[NSData dataWithContentsOfURL:uri];和之间有什么区别[NSKeyedArchiver archivedDataWithRootObject:uri];

谢谢.

Tec*_*Zen 4

首先,您的代码不会尝试序列化 NSURL 对象,而是尝试根据作为托管对象的 URI 返回的 URL 处的数据创建数据对象。

其次,这永远不会起作用。

[NSData dataWithContentsOfURL:]将尝试读取特定 URL 处的文件。托管对象的 URI 表示与许多其他对象一起存储在持久文件(如 SQLite 数据库)内的对象。

URI 只允许托管对象上下文识别其自己存储中的特定对象。除了上下文之外,URI 对于其他任何内容来说都是乱码。

NSManagedObject 不实现 NSCoder 协议,因此托管对象无法序列化。我不确定你想在这里做什么,但你不能这样做。