ナビゲーション コントローラーでは、ビュー コントローラー 1 からビュー コントローラー 2 に移動します。
ビュー コントローラー 1 は、FetchedResultsController に関連付けられたテーブル ビュー コントローラーです。特定のコンテキストからデータを取得して表示します。次に、行がタップされた場合にコントローラー 2 を表示するようにセグエします。セグエイング中に、View Controller 1 にあるデータを使用して、View Controller 2 の特定の NSManagedObject プロパティを設定しました。
これで、View Controller 2 で NSManagedObject プロパティを使用してデータを表示し、データを変更して保存を実行できるようになりました。View Controller 1 に戻ると、変更が反映されます。ただし、アプリを再起動すると、いずれのビュー コントローラーにも反映されなくなります。
これが私が保存を行う方法です。
- (void)hiddenAttributeSwitchSlid:(UISwitch *)sender
{
[self.workoutType.managedObjectContext performBlock:^{
self.workoutType.workoutHiddenByDefault = [NSNumber numberWithBool:sender.isOn];
NSError *error = nil;
if (![self.workoutType.managedObjectContext save:&error]) {
NSLog(@"There was an error in saving to context - %@", [error localizedDescription]);
}
else {
NSLog(@"No error");
}
}];
}
ワークアウト タイプは、このビュー コントローラーにセグエする前に、prepareForSegue: で設定される NSManagedObject です。
performBlock: を使用しなくても機能しません。
PS - この種の質問が以前に出されたことは知っています。それらを閲覧しましたが、何も機能していないようです。