私はiOSで学ぶのは初めてです。ここでは、コアデータから始めます。ここで、そのチュートリアルはコアデータをリンクします。ここで、モデルと属性の作成について理解しました。すべてのデータを入力した後、押す必要があるように、入力したデータはsave
モデルに保存され、テーブルビューにも表示されます。managed object
データを格納するためにアプリケーションコードによって作成されるオブジェクトはわかっています。
私の疑い:
save
ボタンを押した後。入力されたデータがどのようにトリガーされてテーブルビューに表示されるか、またそのデータがモデル(コアデータ)にどのように保存されるか。私はこの部分で混乱しています。
すべてのデータを入力し、save
そのデータがコアデータにどのように保存され、テーブルビューに表示されているかを押したとき。それがどのように機能するか私は理論的かつ実用的な方法で求めています。
display
テーブルビューでそのデータに対してどのメソッドがトリガーされるか。そしてどのようにentered data are storing in core data (model)
テーブルビューのデータを削除すると、そのデータはモデルに表示されません。どのように、それがどのように機能しているか。save
そのデータがコアデータにどのように保存されているかを押すと(モデル-属性)
例:
それらは3つの属性を使用します:
彼らがどのように節約しているかわかりません。投票を下げないでください。これは私の最初の質問です。これは、今後の初心者に役立ちます。ありがとう
すべてのデータを入力し、[保存]を押すと、そのデータがコアデータにどのように保存されているか...
保存ボタンには、ボタンを押すと-save:
トリガーされるアクションがあります。そのメソッドは次のようになります。
- (IBAction)save:(id)sender {
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new managed object
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];
[newDevice setValue:self.nameTextField.text forKey:@"name"];
[newDevice setValue:self.versionTextField.text forKey:@"version"];
[newDevice setValue:self.companyTextField.text forKey:@"company"];
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
この方法の重要なアイデアは次のとおりです。
管理対象オブジェクトコンテキスト:メソッドが最初に行うことは、アプリの管理対象オブジェクトコンテキスト、つまりすべての管理対象オブジェクトを管理するオブジェクトへの参照を取得することです。
管理対象オブジェクトの作成:次に、このメソッドは、デバイス情報を含む新しい管理対象オブジェクトを作成します。新しいオブジェクトに入力したデータが保存されます。管理対象オブジェクトを作成するときにMOCを指定する必要があるため、オブジェクトはすでに管理対象オブジェクトコンテキストに属しています。
コンテキストの保存:if
ステートメントの条件付き部分の呼び出しはコンテキストを保存します。つまり、変更を永続ストアに書き込みます。
チュートリアルの後半で、-save:
既存のオブジェクトも更新するようにメソッドが変更されます。コードを見ると、そのバージョンのメソッドが最初に、ViewControllerが既存のオブジェクトで機能しているかどうかを確認していることがわかります。そうである場合は、新しいオブジェクトを作成する代わりに、そのオブジェクトを変更します。
...そしてテーブルビューで表示されています。
標準の一つUIViewController
の方法があり-viewDidAppear:
、そしてDeviceViewController
次のようにこのメソッドをオーバーライドします。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// Fetch the devices from persistent data store
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Device"];
self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[self.tableView reloadData];
}
ご覧のとおり、このメソッドは次のことを行います。
管理対象オブジェクトのコンテキストを取得します。MOCがないとCoreDataオブジェクトにアクセスできません。
フェッチリクエストを作成して実行します。フェッチリクエストは、CoreDataストアから特定のオブジェクトを取得する方法です。フェッチ要求の結果はオブジェクトの配列であり、ViewControllerのdevices
プロパティに保存されます。
テーブルをリロードします。-reloadData
メッセージをテーブルに送信すると、データソースから新しいデータセットを(サプライズで)ロードするように指示されます。ビューコントローラはテーブルのデータソースであるため、テーブルが新しいセルを要求すると、ビューコントローラはそのdevices
プロパティのオブジェクトを使用して各セルを構成します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加