我正在尝试在我的应用程序中的多个视图中保存和检索数据,现在我已经保存了数据,并且我可以检索该数据,只要我在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很新。
答案 0 :(得分:1)
app委托是一个单独的单一,所以你应该可以从任何视图访问它
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
从那里你可以调用你想要的任何方法来检索和存储数据..
关于在哪里保持核心数据堆栈可以通过应用程序访问存在各种问题,here就是其中之一。 丹尼尔
答案 1 :(得分:1)
您需要导入appDelegate的标头。您将使用它来访问appDelegate的托管对象上下文。您可以使用该上下文来获取获取所需的信息。您还需要导入实体的类表示的标头。进行提取和插入是一个相同的过程。您可能还需要查看NSFetchedResultsController文档以帮助您使用tableView等。