如何在类之间使用Core Data?

时间:2012-03-28 06:41:28

标签: iphone objective-c core-data

我只是在学习核心数据,而且主要是应对,但在考虑如何实现它时遇到一些麻烦。

我想从我的整个应用中访问相同的核心数据。从多个类访问它的最佳方法是什么?是否建议将其作为全局变量(通常不建议在面向对象编程中使用),或者将其作为类之间的实例变量传递?

3 个答案:

答案 0 :(得分:5)

核心数据模型将在整个应用中提供。您可以通过您的应用轻松访问托管对象。您只需要创建AppDelegate类的实例。

例如,您说已存储了联系人。您可以在任何视图控制器中使用[managedObject valueForKey:@"name"]

1。创建appDelegate的实例

self.theappDel=[[UIApplication sharedApplication] delegate];

2. 获取上下文,获取请求和实体说明。

NSManagedObjectContext*context=[self.theappDel managedObjectContext];
NSEntityDescription*entity=[NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:context];
NSFetchRequest*request=[[NSFetchRequest alloc] init];
[request setEntity:entity];
NSManagedObject*managedObject=nil;
NSError*error=nil;
NSArray*objectList=[context executeFetchRequest:request error:&error];

3. 从阵列中获取托管对象。

if([objectList count]>0)
managedObject=[objectList objectAtIndex:0];
NSLog(@"The name: %@",[managedObject valueForKey:@"name"])

4. 使用singleton(或任何方便的方法)模式在您需要的其他视图控制器中传递名称对象。

答案 1 :(得分:1)

传递NSManagedObjectContext实例,或者只需要将NSManagedObject实例的一个对象处理到下一个类。

就像在Xcodes核心数据模板中完成的一样。

答案 2 :(得分:1)

查看MagicalRecord图书馆。它不仅使许多常见的提取请求更加简洁,而且还可以通过使用[NSManagedObjectContext defaultContext];

更轻松地访问托管对象上下文