問題:AddingManagedObjectContextの扱いにくい使用?
アプリはユニバーサルライブラリスタイルのCoreDataです。RootTableViewには、本のカテゴリリスト、フィクション、SFなどがあります。本の追加は、EditButtonを介して第2レベルのBookListTableViewで実行され、次に新しく表示される「+」ボタンを使用します。3番目のレベルは、本の詳細のテーブルビューを表示します。
ユーザーが第2レベルの「ブックリスト」ビューの「+」ボタンをタッチすると、ホームのブックリストビューで選択されたカテゴリがデフォルトでブックに含まれるようになっていることをすでに示しています。新しい本はメインMOCで不明なオブジェクトになり、挿入操作の開始時にaddingMOCに配置されます。ユーザーの希望するカテゴリ、たとえばSci-FiをmainMOCからaddingMOCに追加すると、保存時にエラーが発生することがわかりました。私が理解しているように、ManagedObjectは2つの異なるMOCに存在できないためです。
ユーザーの便宜のためにこのカテゴリの追加を実行したいので、次の回避策を実行します。同じカテゴリ名の新しい代用カテゴリを使用し、それを新しいブックのプロパティに追加します。
@property (nonatomic, retain) NSSet* categories;
したがって、編集モードのBooks Details Tableビューで、代用カテゴリオブジェクトの名前を表示できます。次に、ユーザーが[保存]ボタンをタッチすると、次の直前になります。
[self.addingManagedObjectContext save:&error]
objectIDを使用して、新しいブックから代用カテゴリを削除してから、addingManagedObjectContext自体から同じカテゴリを削除します。
次の方法でこのaddingMOC保存に従ってください。
NSNotificationCenter * dnc = [NSNotificationCenter defaultCenter]; [dnc addObserver:selfセレクター:@selector(addControllerContextDidSave :)名前:NSManagedObjectContextDidSaveNotificationオブジェクト:self.addingManagedObjectContext];
addMOCの新しいブック(カテゴリなし)がmainMOCにマージされます
次に、mainMOCの対応するカテゴリを新しい本に挿入し、mainMOCを保存してsaveActionを完了します。
これは私にとってはうまくいきますが、ぎこちなく感じます。誰かが私が間違っているところと私が欠けているものを説明できますか?この問題を処理するための正しくてエレガントなカカオの方法は何ですか?
ありがとう、マーク