Tag: nspredicate

如何在NSPredicate中使用“ALL”聚合操作来过滤基于CoreData的集合

基于下面的数据模型 并基于用户input,我创build了一个名为selectedTags的实体标记的managedObjects的NSSet。 我的问题: [NSPredicate predicateWithFormat:@"ANY entryTags IN %@", selectedTags]; …这将返回至less有一个EntryTag在SelectedTags集中的任何条目。 我想要的东西是: [NSPredicate predicateWithFormat:@"ALL entryTags IN %@", selectedTags]; …注意唯一的变化是“任何”到“全部”。 这说明了我想要的,但不起作用。 为了制定我期望的结果: 我正在寻找一个解决scheme,将只返回入口的入口标签都在selectedTags列表(但在同一时间,如果可能的话,不一定是相反的方式)。 为了进一步说明: (标签)的妈妈 (标签)爸爸 (标签)礼品 (进入)她是她…..(标签)妈妈 (进入)他是一个他……..(标签)爸爸 (进入)礼物给妈妈…(标签:)妈妈,礼物 (入门)爸爸的礼物…..(标签:)爸爸,礼物 如果selectedTags包含“妈妈”和“礼物”,那么“爸爸的礼物”将会出现,因为它有“礼物”的标签。 我宁愿它不显示:)

两个date之间的NSPredicate范围不能按预期工作

我有这两个NSDate : NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"MM/dd/yyyy"]; NSDate *rangeStart = [df dateFromString: @"03/03/2013"]; NSDate *rangeEnd = [df dateFromString: @"10/04/2013"]; 而这个谓词: request.predicate = [NSPredicate predicateWithFormat:@"createdDate >= %@ AND createdDate <= %@", rangeStart, rangeEnd]; 但是即使谓词的第二部分特别使用<=它直到前一天(即10/03/2013 )才返回对象。 我也尝试构build这样的谓词: NSPredicate *dateStartPredicate = [NSPredicate predicateWithFormat:@"createdDate >= %@", rangeStart]; NSPredicate *dateEndPredicate = [NSPredicate predicateWithFormat:@"createdDate <= %@", rangeEnd]; NSPredicate […]

NSPredicate和NSInvalidArgumentException中的SUBQUERY

我在Core Data中设置了以下模型。 Book has a to-many relationship, called toBookOrders, with OrderBook entity. The inverse is called toBook. Book has a BOOL value property called isSync. 我build立了以下NSPredicate 。 NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:moc]; NSPredicate* predicate = [NSPredicate predicateWithFormat:@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF)"]; 通过这个谓词,我只需要抓取没有同步的书籍和他们的相关命令。 这是我收到的错误。 终止应用程序由于未捕获exception“NSInvalidArgumentException”,原因:“无法parsing格式string”isSync == 0和子查询(toBookOrders,$ x,$ x.toBook == SELF)“ […]

CoreData谓词:string属性的长度?

说如果我有一个实体Fragment ,它有一个属性“文本”,这是一个string,我想查询其text长度为5的Fragment的列表: [NSPredicate predicateWithFormat:@"position == %@ AND text.length == %d", pos, 5]; 它不起作用(即没有返回结果),但如果我删除查询中的text.length它的工作,我敢肯定有长度为5的文本,所以我需要改变它? 谢谢!

核心数据子查询谓词

我试图让一个子查询谓词工作,我很挣扎。 我有两个实体。 [联赛] <—- >> [游戏] 游戏有一个属性kickOffDate 。 我想用一个谓词来返回所有至less有一场Game Leagues ,并且今天有一个kickOffDate。 我正在使用这个谓词 // startOfDay and endOfDay are functions to return the given date with 00:00:00 and 23:59:59 respectively NSPredicate *startOfDayPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(games, $g, $g.kickOffDate >= %@).@count > 0", [self startOfDay:[NSDate date]]]; NSPredicate *endOfDayPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(games, $g, $g.kickOffDate <= %@).@count > 0", [self endOfDay:[NSDate […]

无NPRredicate集合操作

如何创build可以读取的谓词:所有问题不包含answer.correct = "1" 。 如果返回的数组包含“0”和“1”,则以下谓词不起作用: [NSPredicate predicateWithFormat:@"NONE answers.correct IN %@", [NSArray arrayWithObject:@"1"]]; 还尝试了不(任何…):相同的结果 这是一个错误?

使用NSPredicatesearch/过滤自定义类数组

我有一个包含自定义类的对象的数组,我想过滤的数组,如果其中一个类属性包含自定义string。 我有一个方法传递了我想要search的属性(列)和它将search的string(searchString)。 这里是我有的代码: NSPredicate *query = [NSPredicate predicateWithFormat:@"%K contains %K", column, searchString]; NSMutableArray *temp = [displayProviders mutableCopy]; [displayProviders release]; displayProviders = [[temp filteredArrayUsingPredicate:query] mutableCopy]; [temp release]; 但是,它总是在displayProviders = [[temp filteredArrayUsingPredicate:query] mutableCopy]上引发exception; 说这个类不是关键的值编码的密钥[无论searchString是]。 任何想法我做错了什么?

在创build新对象时查询特定属性的核心数据,如果存在,则返回该对象;如果不存在,则创build一个新的对象

我有一个问题,在创build一个新对象之前,通过谓词检查一个实体的特定属性是否存在于核心数据库中; 如果对象存在,我宁愿返回它比创build一个新的对象。 我有一个简单的应用程序,在导航栏中有一个带有加号button的表格视图; 用户点击它,并带有4个文本字段的视图控制器。 他们填写这些信息,按保存,它被保存到核心数据,并显示在TableView中(通过使用NSFetchedResultsControllers)。 数据模型如下: 具有isReceived的事务实体BOOL属性具有名称string属性的Person实体具有标题string属性的Occasion实体具有数量string属性的Item实体 交易与Person(whoBy),Occasion(Occasion)和Item实体有关系。 在具有save方法的视图控制器中,我有下面的代码将新的对象插入交易,人员,场合实体等。每个交易当然是唯一的,但是对于每个交易,用户可以select现有的PERSON /或场合,如果那个人不存在,它将被创build(同样的情况下)。 我对这里的代码格式略有困惑。 编辑:我已经尝试了代码的组合,可以只是不能得到这个工作。 在下面的代码中,我在谓词中引用person.name,但是我也尝试创build一个本地的NSStringvariables来保存self.nameTextField.text代码,但是什么也没做。 我试图创build一个NSString属性来引用它的方式,这是行不通的。 我试着用MATCHES, LIKE, CONTAINS, ==和每个组合之间的单词。 – (IBAction)save:(id)sender { NSManagedObjectContext *context = [self managedObjectContext]; Transaction *transaction= [NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:context]; Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context]; Occasion *occasion = [NSEntityDescription insertNewObjectForEntityForName:@"Occasion" inManagedObjectContext:context]; Item *amount = [NSEntityDescription insertNewObjectForEntityForName:@"item" inManagedObjectContext:context]; NSFetchRequest *personFind = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; personFind.predicate […]

使用NSPredicate与字典过滤数组

有一个数组,每个元素是一个NSDictionary 。 NSMutableArray *mutArr = [NSMutableArray array]; for (Person *person in persons) { NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:person.name, @"name", person.email, @"email", nil]; [mutArr addObject:dict]; } self.arr = [[NSArray alloc] initWithArray:mutArr]; 如何使用名称或电子邮件包含string@"filter string"通过使用filterArrayUsingPredicate:方法。 提前致谢!

不能使用比较魔法logging中的date的谓词

我正在做一个方法,将删除所有我没有更新在上次同步的NSManagedObjects。 – (void)removeStaleObjects { // Delete objects that have not been updated in this sync. NSPredicate *stalePredicate = [NSPredicate predicateWithFormat:@"updated < %@", self.syncStart]; NSArray *staleObjects = [Node MR_findAllWithPredicate:stalePredicate]; for (Node *n in staleObjects) { [[NSManagedObjectContext MR_defaultContext] deleteObject:n]; } } 该代码在MR_findAll …行上保持失败 [__NSDate objCType]: unrecognized selector sent to instance 我已经用苹果文档检查了我的语法,并且我正确地创build谓词是99%,startDate只是 _startDate = [NSDate date]; 在我的同步之前运行。 然后我同步后,我打电话 […]