コアデータを使用するアプリケーションを開発しています。私のアプリケーションでは、すべてのユーザーに同じデータベースを持たせたいと考えています。したがって、すべてのデバイスで同じコア データ オブジェクトを共有する必要があります。
その「同期」を行うために、この問題について説明したこの回答に関するプレゼンテーションを見つけました。プレゼンテーションでは、Core Data のすべてのオブジェクトに「creationDate」や「modificationDate」などの属性を追加することが提案されています。
そのために、コアデータのすべてのオブジェクトにこれらのプロパティを追加するために、NSManagedObject (MyManagedObject) をサブクラス化しようとしました。また、私が持っていたすべての NSManagedObject サブクラス (モデルによって自動的に生成されたもの) をサブクラス MyManagedObject にしました。
問題は、NSManagedObject サブクラスに追加したプロパティがデータベースに保持されないことです。そのため、アプリケーションを閉じて再度開くと、「creationDate」は (null) になります。
これが私のコードの一部です(ヘッダー):
@interface MyManagedObject : NSManagedObject
@property (nonatomic, retain) NSDate * modificationDate;
@property (nonatomic, retain) NSDate * creationDate;
@end
.m ファイルは次のとおりです。
@implementation MyManagedObject
@synthesize modificationDate, creationDate;
-(void)willSave {
[super willSave];
self.modificationDate = [NSDate date];
}
-(void)awakeFromInsert {
[super awakeFromInsert];
[self setCreationDate:[NSDate date]];
[self setModificationDate:[NSDate date]];
}
ヘルプ、指示、または読書は大歓迎です。私はしばらくこれに苦労してきました。これらの属性をモデル内のすべてのエンティティに追加するよりも良い方法が必要です。前もって感謝します
PS: サーバーに「真実のデータベース」(.sqlite ファイル) を用意するつもりです。同期はサーバーと iPhone の間で行われます。プレゼンテーションで提案されたものなど