我正在编写一个应用程序,我正在使用 MagicalRecord 作为与 Core Data 交互的框架。该应用程序从服务器获取一组海报,然后显示它们。如果用户需要,也可以在应用程序上创建海报,然后上传到服务器。
因此,用户创建的海报使用 Core Data 存储在本地数据库中,而从服务器获取的海报应该只显示在应用程序中,而不是保存在本地。如何使用相同的 Poster 类(现在是 NSManagedObject 的子类)来处理这两种情况?
这是我的课:
@interface Poster : NSObject
@property (nonatomic, retain) NSNumber * posterID;
@property (nonatomic, retain) NSString * artists;
@end
当我从服务器获取海报数组时,我分配一个新海报,然后分配属性:
Poster *poster = [[Poster alloc] init];
if ([dict objectForKey:@"id"]) poster.posterID = [dict objectForKey:@"id"];
if ([dict objectForKey:@"artists"]) poster.artists = [dict objectForKey:@"artists"];
但是当到达链接的 poster.posterID = [dict etc 等时,应用程序崩溃并出现此错误
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Poster setPosterID:]: unrecognized selector sent to instance 0xaa8b160”
Poster *poster = [Poster createEntity];
如果我使用而不是创建新对象Poster *poster = [[Poster alloc] init];
,应用程序不会崩溃,但是当我保存上下文时,我发现从服务器获取的所有海报都保存在本地。
我该如何解决这个问题?