如何在核心数据中使用 NSPredicate 从属性之一获取值

Posted

技术标签:

【中文标题】如何在核心数据中使用 NSPredicate 从属性之一获取值【英文标题】:How to get values from one of the Attributes using NSPredicate in Core Data 【发布时间】:2013-03-30 15:23:58 【问题描述】:

我有一个基于核心数据的项目。其中一个属性称为“日期”,我想从该属性中获取值,值以字符串“2013-03”开头,但我只能得到最新值,如字符串“2013-03-30”,如何将所有以“2013-03”开头的值放入NSArray?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Database" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date beginsWith %@",value];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescription = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescription]];

【问题讨论】:

【参考方案1】:

我自己解决 NSMutableArray *array = [[NSMutableArray alloc] init];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Database" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date beginsWith %@",value];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescription = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescription]];

NSError *fetchError = nil;
NSArray *fetchArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&fetchError];

if ([fetchArray count] > 0)

    for (Database *fetchResult in fetchArray)
    
        [array addObject:fetchResult.date];
    

return array;

【讨论】:

以上是关于如何在核心数据中使用 NSPredicate 从属性之一获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的核心数据中创建和使用带有查询的 NSPredicate?

核心数据:如何使用 NSPredicate 查找空字段

核心数据和 NSPredicate

使用 NSPredicate 比较核心数据查询中的日期

使用 NSPredicate 获取核心数据对象数组?

核心数据:在两个实体中查找的 NSPredicate