![](/img/trans.png)
[英]How do I ensure Core Data retrieval between switching tabs on a tab bar controller?
[英]How do i use Core Data between classes?
我只是在学习核心数据并且主要是应对,但是在思考如何实现它方面会遇到一些麻烦。
我想从我的整个应用程序访问相同的核心数据。 从多个类访问它的最佳方法是什么? 是建议将其作为全局变量(通常在面向对象的编程中不建议使用),还是将其作为实例变量在类之间传递?
核心数据模型将在您的整个应用中可用。 您可以轻松地通过应用程序访问托管对象。 您只需要创建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
(或任何方便的方法)模式传递名称对象。
将NSManagedObjectContext
实例传递给下一类,或者如果只需要处理一个对象,则将NSManagedObject
实例传递给下一类。
就像在Xcodes Core Data模板中一样。
看一下MagicalRecord库。 它不仅使许多常见的提取请求更加简洁,而且还使得仅通过使用[NSManagedObjectContext defaultContext];
访问托管对象上下文变得更加容易[NSManagedObjectContext defaultContext];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.