你可能不想要NSFetchedResultsController。结果控制器通常与UITableViewController一起用作辅助对象来填充表。
如果这就是你想要的,继续。但是,如果您正在寻找从核心数据上下文中获取实体,则只需要一个NSFetchRequest。假设你有一个名为Person的核心数据对象。比方说,我们希望所有名为“Ryan”的实体
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSString *nameToGet = @"Ryan";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@", nameToGet];
[fetch setPredicate:predicate];
NSError *error = nil;
NSArray *results = [[self managedObjectContext] executeFetchRequest:fetch error:&error];
if(results) {
NSLog(@"Entities with that name: %@", results);
for(Person *p in results) {
NSLog(@"person = %@", p);
}
return results;
} else {
NSLog(@"Error: %@", error);
}
return nil;
因此您创建了一个提取请求。 NSPredicate就像SQL语句的where条件。所以你创建一个格式为(there are tons of options for creating predicates)的谓词。设置请求的谓词,然后告诉你的managedObjectContext执行获取请求。请求的任何结果都将返回到返回的数组中。数组中的每个对象都将是Person类型的对象。
如果您正在寻找使用NSFetchedResultsController,它基本上是相同类型的东西。但是,您使用1个不可变的提取请求创建控制器,因此它总是获取相同的数据。如果你想要不同的数据,你需要创建另一个控制器。如果你只坚持NSFetchRequests(我从我的用户界面中分配我的数据层,所以使用控制器对我来说并不是很有用),你可以查询你想要的任何数据并返回结果。
“NSFetchedResultsController”的文档包含详细的示例代码以及使用它的六个不同示例应用程序。你有没有一个具体的问题答案? – 2013-02-08 18:05:24
那么现在我至少知道在哪里看,谢谢!我被不同的网站抛弃,创建了模型包装器和模型对象上下文。 – jacobronniegeorge 2013-02-08 18:15:08