Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSFetchRequest(CoreData)填充数组_Ios_Xcode_Core Data_Uiviewcontroller_Nsfetchrequest - Fatal编程技术网

Ios 使用NSFetchRequest(CoreData)填充数组

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

我为iPad创建了一个项目,它使用了苹果的
“使用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)

谢谢,我自己找到了一个类似的解决方案,这是我迟接受答案的原因。谢谢,我自己找到了一个类似的解决方案,这是我迟接受答案的原因。