从核心数据数据库中获取特定数据并在UITableView中显示

时间:2013-07-09 16:30:09

标签: ios core-data

我目前有一个表视图,显示数据库实体的所有内容:ExData。

ExData有一个字符串类型的属性标记。

我的问题是我想在表格视图中显示ExData的内容,但只显示标签设置为2的条目。

标签将从之前的视图控制器发送,但这可以在以后进行整理,因为我只想硬编码只显示一个标签值条目

ExDatasArray是一个可变数组。

NSManagedObjectContext * managedObjectContext = [self managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ExData"];

self.ExdatasArray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

以上是如何获取ExData中的数据......

2 个答案:

答案 0 :(得分:0)

要获取特定数据,请在获取请求中添加谓词

NSString *theTag = ...
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag == %@", theTag];
[fetchRequest setPredicate:predicate];

备注:如果要在表格视图中显示结果集,您可能还会考虑 使用NSFetchedResultsController

答案 1 :(得分:0)

如果我正确理解您的问题,您正试图限制fetchRequest的结果。使用NSPredicate指定查询,如果需要,还可以使用NSSortDescriptor对其进行排序。下面我假设您的标签属性名为tag,并且已正确设置了searchTagValue。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ExData"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"tag == %@", searchTagValue];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]];

NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (!result) {
    // handle error
}
else {
    self.ExdatasArray = [results mutableCopy];
}