2010-01-04 152 views
1

我刚刚使用CoreData,我试图了解如何在表上执行查询。我可以使用提取请求来从表中提取所有记录,但我正在寻找一个子集。是否有捷径可寻?iPhone核心数据查询

感谢, 豪伊

回答

1

你必须做一些事情,如:

// Init your fetchRequest 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"entityName" inManagedObjectContext:yourManagedObjectContext]; 

// create the relation between request and the created entity 
[fetchRequest setEntity:entityDescription]; 

// Set your predicate for this request 
// For more info take a look at NSPredicate Class Reference 
// http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html 
[fetchRequest setPredicate:somePredicate]; 

// Pushing the results into a mutable array 
NSMutableArray *mutableFetchResults = [[yourManagedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy]; 

[fetchRequest release]; 
+0

感谢您的帮助 – Ward 2010-01-05 06:24:00

5

你有没有看着Predicates?您也可以购买Marcus Zarra's book on Core Data

+2

我想补充,对于提问的理解:核心数据是一个对象存储,而不是关系数据库。您可以在后端安装SQLite,但它只能在后端使用 - 您不需要直接使用数据库。 – 2010-01-04 17:28:47

3

您可以将NSPredicate添加到NSFetchRequest以筛选返回的记录。您也可以控制返回对象中的填充内容(只填充属性,包含关系,填充任何内容,仅返回计数等),但正如Peter指出的那样,Core Data是一种对象层次结构和模型API,到数据库。当您从该POV中查看时,处理起来要容易得多。