ManagedObjects に変更を加え、それらの変更を永続ストアに保存する際に問題があります。
機能するのは、オブジェクトの削除、オブジェクトの挿入です。そしてそれらのオブジェクトをフェッチします。前述のとおり、取得した管理対象オブジェクトを変更できませんでした。
私は2つのView Controllerを持っています。どちらにもパブリック プロパティがあります。
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
AppDelegate.m ファイルは、次のように application:didFinishLaunchingWithOptions: メソッドの最初のビュー コントローラーにこのプロパティを設定します。
// get reference to view controller //
//..
controller1.managedObjectContext = self.managedObjectContext;
ビュー コントローラー 1 は、2 番目のビュー コントローラーにプッシュするときに、managedObjectContext を再び渡します。これは、次のように prepareForSegue: メソッドで行われます。
// Get reference to the detail view //
MySecondViewController *controller2 = segue.destinationViewController;
// Pass the managed object context //
controller2.managedObjectContext = self.managedObjectContext;
この 2 番目のビュー コントローラー内で、コア データからオブジェクトを取得し、次のようにビュー コントローラーのプロパティに格納します。
@property (nonatomic, strong) MyKindOfObject *object;
...
self.object = [fetchResults lastObject];
私はうまく結果を得るので、オブジェクトのフェッチはうまくいくようです..
取得したオブジェクトには多くのプロパティがあり、そのうちの 1 つは NSString 型です。UITextField に表示するこのプロパティの値。ユーザーはここで値を変更でき、完了したらボタンを押します。アクションをキャッチし、次のことを行います。
self.object.mytext = textField.text;
続いてコアデータへの保存を試みます:
// Save to CoreData //
NSError *error = nil;
if(![self.managedObjectContext save:&error]){
// handle the error //
NSLog(@"is error");
}
else{
NSLog(@"no error");
}
1) 次にユーザーがこのビュー コントローラーに戻ったときに、オブジェクトが再度取得されます。しかし、それはまだ古い値を持っています。
2) また、SQLite Manager という Firefox アドオンを使用して、関連する sqlite ファイル内のデータを監視しています。コードをステップ実行するとき、save メソッドを呼び出した後、ファイルは何も変更されません。
3) Xcode 内でも、変数ビューを使用して self.managedObjectContext オブジェクトを監視します。新しいデータをオブジェクトに格納するとき、save を呼び出す直前に、self.managedObjectContext のプロパティは変更されません (unprocessedChanges や changedObjects など)。
4) managedObjectContext の hasChanges メソッドへの呼び出しも追加しましたが、これは NO を返します。
if([self.managedObjectContext hasChanges]){
NSLog(@"changes managed object context!");
}
5) 関連する managedObject の hasChanges メソッドへの呼び出しも追加しましたが、これも NO を返します。
if([self.object hasChanges]){
NSLog(@"changes in managed object!");
}
私はおそらくここで何か完全に間違ったことをしているのですが、それが何であるかわかりません。誰かが私を助けてくれることを本当に願っていますか?. 前もって感謝します!