みなさん、こんにちは—私はiPhoneプログラミングとCoreDataの初心者です。私は現在、Core Dataの背後にある理論のいくつかを学ぼうとしており、このチュートリアルを使用してアプリに実装するのに役立てています。
チュートリアルUITableViewController
では、保存されたオブジェクトを一覧表示するメインビューと、オブジェクトを保存する別のビューUITableViewController
(属性を入力する場所)を作成することで説明します。
私が作成しているアプリには3つのビューがあります。メインビューはプレーンUIViewController
(計算を処理します)です。をタップするUIBarButtonItem
と、より具体的な属性を入力する2番目のビューに移動して計算を保存できます。[保存]をタップすると、メインビューに戻ります。ここで、[保存済みの表示]ボタンをタップして、UITableViewController
含まれている保存済みオブジェクトにアクセスできます。
#importedUITableViewController
ファイルをメインビューのインターフェイスファイルに含めましたが、プログラムを実行すると、prepareForSegue
メソッドの次の行でエラーが発生します。
addShoeSizeTVC.managedObjectContext = self.managedObjectContext;
エラーは「プロパティmanagedObjectContextがタイプ'SSFViewController*'のオブジェクトに見つかりません」です。このエラーの意味を理解しています— SSFViewControllerクラスにmanagedObjectContextというオブジェクトがありませんが、ファイルを含めると、引き続き認識されるmanagedObjectContextが含まれています。チュートリアルでは、prepareForSegue
メソッドがセグエのリストビューに含まれていて、新しいオブジェクトを追加することを追加する必要がありますUITableViewController
。このメソッドを自分のに移動しましたmainViewController
。
ApplicationDidFinishLaunchingWithOptions
また、メソッドのAppDelegateでエラーが発生します。
controller.managedObjectContext = self.managedObjectContext;
これは、他のエラーと同じ問題が原因であると理解しています(同じエラーメッセージが表示されます)。
viewA(mainView)からviewB(オブジェクトの追加)、viewA、viewC(保存されたオブジェクトの表示)にデータを渡す方法がわかりません。委任について聞いたことがあり、メインビューのprepareForSegue
メソッドで使用しています。SSFViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"Add Object Segue"]) {
NSLog(@"Setting ObjectsTVC as a delegate of AddObjectTVC");
AddObjectTVC *addObjectTVC = segue.destinationViewController;
addObjectTVC.delegate = addObjectTVC.self;
addObjectTVC.managedObjectContext = addObjectTVC.self.managedObjectContext;
}
}
また、このaddObjectTVC.delegate = addObjectTVC.self;
行には、「互換性のないタイプ「id」のパラメーターに「AddObjectTVC*」を渡す」という警告が表示されます。
NSManagedContext
メインビューでまたは別の委任メソッドを設定する必要がありますか?それとも、テーブルビューのいずれかに追加する必要があるものですか?
どうもありがとうございます。適切な情報が提供されれば、これは簡単に解決できる問題だと思います。問題を解決するために必要な場合は、使用した他の方法を投稿できてうれしいです。私は初心者ですので、初心者にわかりやすい説明をいただければ幸いです。
ありがとう!