我为iPad创建了一个使用Apple "Use CoreData"
模板的项目。
我定制了几件事,例如对象的名称,但系统保持不变。
Apple使用的MasterViewController.h
是UITableViewController
和DetailViewController.h
,这是一个简单的UIViewController
。在UITableView
MasterViewController.h
中选择其中一个对象后,它会将其属性赋予DetailViewController
。
现在出现问题:
我创建了一个名为ResultsViewController.h
的第三个视图控制器,它应该显示所有数据(对象的属性)。
我想使用一个或多个NSArray(s)
,它应该包含我的所有数据(不仅仅是所选的全部。所以如果你创建了5个对象,你想要有5次NSArray
)。
(1)如何获取xcoredatamodel
的值以便能够在ResultsViewController
中访问它们?发送获取请求对我不起作用?
(2)如何确定我在UITableView
(MasterViewController.h
)中创建的对象数量?
CoreData结构:
简单,一个实体,几个属性,就是它!
非常感谢!
答案 0 :(得分:9)
首先:您不应该将所有数据放入数组中。一旦数据量增长,这将导致内存问题。核心数据实际上旨在非常有效地获取您需要的数据,而无需维护昂贵的并行数据结构。
因此,首选方法是将相同的NSManagedObjectContext
传递给ResultsViewController
,然后根据需要获取自己的数据。
但是,如果你真的想要获取所有数据,那很简单。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [self.managedObjectContext
executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
数组fetchedObjects
现在包含您的所有数据。您可以按常规方式访问属性(例如,使用点表示法或KVC)。