これがどれほど複雑になるかわかりませんが、
CoreDataを使用するアプリがあります。
新しい管理対象オブジェクトを作成するときは、そのフィールドにplistに設定されたデフォルト値を入力します。
次に、一連のフォームを表示します(保存された値をフォームにロードし、オブジェクトの値を更新します)。
そして最後に、オブジェクトにChangesがあるかどうかを確認し、オブジェクトを保存することを提案します。
この部分は正常に機能します。
ただし、ユーザーがインターフェイスで[戻る]を押したときに問題が発生した場合。ユーザーがオブジェクト内の何かを変更した場合にアラートを表示できるようにしたい、または何も変更されていない場合にユーザーを元に戻せるようにしたい。
hasChangesを使用しますが、オブジェクトにデフォルトデータを入力するため、CoreDataは、オブジェクトが最初から変更されていることを認めます。
では、どうすれば新しい管理対象オブジェクトを作成して、変更と見なさずに初期化できますか?
- (Company *)createNewDefaultCompany:(NSString *)name{
Company *company = [Company insertInManagedObjectContext:managedObjectContext];
[company setName:name];
[company setDate:[NSDate date]];
[company setLocalisation:@"en_UK"];
Input *input = [Input insertInManagedObjectContext:managedObjectContext];
[input populateWithDefault];
[company setCompanyInputs:input];
Formulas *formulas = [Formulas insertInManagedObjectContext: managedObjectContext];
[formulas populateWithDefault];
[company setCompanyFormula:formulas];
[company createCalculus];
return company;
}
管理対象オブジェクトの作成。
+(Company *)insertInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext{
return (Company *)[NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:managedObjectContext];
}