Ios 使用NSFetchRequest(CoreData)填充数组
我为iPad创建了一个项目,它使用了苹果的Ios 使用NSFetchRequest(CoreData)填充数组,ios,xcode,core-data,uiviewcontroller,nsfetchrequest,Ios,Xcode,Core Data,Uiviewcontroller,Nsfetchrequest,我为iPad创建了一个项目,它使用了苹果的“使用CoreData”模板 我定制了一些东西,例如对象的名称,但系统保持不变 苹果使用MasterViewController.h和DetailViewController.h,后者是一个简单的UIViewController。在MasterViewController.h的UITableView中选择一个对象后,它会将其属性赋予DetailViewController 现在的问题是: 我创建了第三个视图控制器,名为ResultsViewControl
“使用CoreData”
模板
我定制了一些东西,例如对象的名称,但系统保持不变
苹果使用MasterViewController.h
和DetailViewController.h
,后者是一个简单的UIViewController
。在MasterViewController.h
的UITableView
中选择一个对象后,它会将其属性赋予DetailViewController
现在的问题是:
我创建了第三个视图控制器,名为ResultsViewController.h
,它应该显示所有数据(对象的属性)
我想使用一个或多个NSArray
,它应该包含我的所有数据(不仅是选定的数据,而且是所有的数据)。因此,如果您创建了5个对象,您需要5次NSArray
)
(1) 如何获取xcoredatamodel
的值,以便能够在ResultsViewController
中访问它们?发送提取请求对我不起作用
(2) 如何确定在我的UITableView
(MasterViewController.h
)中创建了多少个对象
核心数据结构:
简单,一个实体,几个属性,就是它
非常感谢 首先:您不应该将所有数据放入数组中。一旦数据量增加,这将导致内存问题。核心数据实际上旨在非常高效地获取所需的数据,而无需维护昂贵的并行数据结构 因此,首选的方法是将相同的
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) 首先:您不应该将所有数据放入数组中。一旦数据量增加,这将导致内存问题。核心数据实际上旨在非常高效地获取所需的数据,而无需维护昂贵的并行数据结构
因此,首选的方法是将相同的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) 谢谢,我自己找到了一个类似的解决方案,这是我迟接受答案的原因。谢谢,我自己找到了一个类似的解决方案,这是我迟接受答案的原因。