1

アプリケーション全体の複数のビュー内でデータを保存および取得しようとしています。現在、データを保存しています。AppDelegate 内にいる限り、そのデータを取得できますが、アプリケーションに別のビューを追加しました。新しく保存されたデータをどこから取得して表示したいのですが、別のビューからコア データにアクセスする方法がわかりません。どうすればそれを実現できますか?

ここに私がこれまでに持っているものがあります、

AppDelegate.m:

// store the data
AppDelegate *app = [UIApplication sharedApplication].delegate;
STUDENT *std = (STUDENT *)[NSEntityDescription insertNewObjectForEntityForName:@"STUDENT" inManagedObjectContext:app.managedObjectContext];
[std setName:@"John"];
[std setNumber:[NSNumber numberWithInteger:1]];
[std setPlace:@"USA"];
[app.managedObjectContext save:nil];

// read the data
NSFetchRequest *req = [[NSFetchRequest alloc]init];
[req setEntity:[NSEntityDescription entityForName:@"STUDENT" inManagedObjectContext:app.managedObjectContext]];
[req setPredicate:[NSPredicate predicateWithFormat:@"name == %@", @"John"]];
STUDENT *stud = [[app.managedObjectContext executeFetchRequest:req error:nil] lastObject];

NSLog(@"%@",stud);

NSLog はあなたが期待するものを出力します。

<STUDENT: 0x518b860> (entity: STUDENT; id: 0x518e0a0 <x-coredata://5A6AC621-11C1-4857-82BF-9BEEF258B171/STUDENT/p10> ; data: {
    name = John;
    number = 1;
    place = USA;
})

データにアクセスしたい別のビュー コントローラーの名前FirstViewController.m/.h/.xibは です。Objective C は初めてです。

4

2 に答える 2

1

アプリ デリゲートは一種のシングルトンであるため、どのビューからでもアクセスできるはずです。

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

そこから、必要なメソッドを呼び出して、データを取得および保存できます..

アプリケーションを介してアクセスできるようにコア データ スタックをどこに保持するかについては、さまざまな質問があります。ここではその 1 つを示します。ダニエル

于 2012-09-27T14:39:05.700 に答える
1

appDelegate のヘッダーをインポートする必要があります。これを使用して、appDelegate の管理対象オブジェクト コンテキストにアクセスします。そのコンテキストを使用して、取得する必要がある情報を取得します。エンティティのクラス表現のヘッダーもインポートする必要があります。フェッチと挿入の実行は同じプロセスです。また、 NSFetchedResultsControllerのドキュメントを確認して、tableView などを支援することもできます。

于 2012-09-27T14:55:50.687 に答える