私はアプリケーションを作成しており、CoreDataと対話するためのフレームワークとしてMagicalRecordを使用しています。アプリケーションは、サーバーからポスターの配列をフェッチして、それらを表示します。ポスターはアプリで作成し、ユーザーが必要に応じてサーバーにアップロードすることもできます。
そのため、ユーザーが作成したポスターはCore Dataを使用してローカルデータベースに保存されますが、サーバーから取得したポスターはアプリにのみ表示され、ローカルに保存されないようにする必要があります。同じPosterクラス(現在はNSManagedObjectのサブクラス)を使用して、これらの両方のケースを処理するにはどうすればよいですか?
これが私のクラスです:
@interface Poster : NSObject
@property (nonatomic, retain) NSNumber * posterID;
@property (nonatomic, retain) NSString * artists;
@end
サーバーからposters配列をフェッチするとき、新しいポスターを割り当ててから、属性を割り当てます。
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などに到達すると、アプリケーションはこのエラーでクラッシュします
キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています、理由:'-[Poster setPosterID:]:認識されないセレクターがインスタンス0xaa8b160に送信されました'
Poster *poster = [Poster createEntity];
の代わりにを使用して新しいオブジェクトを作成するとPoster *poster = [[Poster alloc] init];
、アプリはクラッシュしませんが、コンテキストを保存すると、サーバーからフェッチされたすべてのポスターがローカルに保存されていることがわかります。
どうすればこれを解決できますか?