jac*_*rge 1 iphone xcode core-data objective-c ios
我创建了一个CoreData模型并定义了我的实体和属性.我还创建了一个NSObject的类(名为dbInterface),它符合<NSFetchedResultsControllerDelegate> 并添加了以下对象
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
Run Code Online (Sandbox Code Playgroud)
这是我迷失的地方.我现在如何从创建的sqlite3文件中获取数据?
我的查询,如果这是正确的术语,需要根据条件从我的一个实体中选择某些记录.我不知道如何在CoreData中编写查询或任何类型的查询.
Col*_*gic 10
您可能不需要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;
Run Code Online (Sandbox Code Playgroud)
因此,您创建了一个获取请求.NSPredicate就像SQL语句的where条件.因此,您可以使用格式创建谓词(有大量选项可用于创建谓词).设置请求的谓词,然后告诉您的managedObjectContext执行获取请求.请求的任何结果都将在返回的数组中.数组中的每个对象都是Person类型的对象.
如果您希望使用NSFetchedResultsController,它基本上是相同类型的东西.但是,您使用1个不可变的提取请求创建控制器,因此它始终获取相同的数据.如果您需要不同的数据,则需要创建另一个控制器.如果您坚持只使用NSFetchRequests(我从我的UI中编写数据层,因此使用控制器对我来说不是很有用),您可以查询所需的任何数据并返回结果.
| 归档时间: |
|
| 查看次数: |
4201 次 |
| 最近记录: |