Tag: nspredicate

NSPredicate对一个查询string进行多重比较

我想知道是否有一种方法可以简化为多个比较目标提供单个查询string的NSPredicate。 我正在为同一查询stringsearch核心数据实体的多个属性。 我目前的查询看起来像这样… [NSPredicate predicateWithFormat:@"(attributeA contains[cd] %@) OR (attributeB contains[cd] %@) OR (attributeC contains[cd] %@)", searchString, searchString, searchString]; 请注意,这是完美的,但它看起来有点难看。 特别是searchString, searchString, searchString部分。 任何提示如何我可以简化这将是伟大的! 谢谢!

如何使用NSDate在一个月内构build一个NSPredicate整天过滤?

有没有办法让一个月的所有日子一般? 像这样的东西: [NSPredicate predicatewithFormat@"(date.firstDayOfMonth >= @)AND(date.lastDayOfMonth <= @)"];

NSPredicate predicateWithFormat传入属性名称

简单的问题关于NSPredicate的。 我试图构build我的谓词与“传入”的值如下所示: NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ]; 但是,我一直无法得到这个正常工作。 如果我插入实际值,我通过它虽然工作。 所以这个工作: NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ]; (注意我插入了contactId而不是前面的例子,我传递了一个string的同名) 为了排除故障NSLogged两个谓词看着他们的描述,他们是不同的。 我会在下面给他们看。 这是工作的一个 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878" 这是不工作的 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878" 所以我可以看到,它插入一个string,我真的只想要的属性的名称,我稍后将在取回请求中使用。 但有没有办法通过传递值来完成这个任务?

在coreData xcode iphone中创build复合谓词

嗨,我正在与3个实体(class级,学生,考试logging)和他们的关系领域核心数据工作: Class<——>> Students <——> ExamRecord 我创build了一个谓词来获取第五课的学生名单。 NSString * fmt2 = @"studentsToClass.className=%@"; NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,@"5th",nil]; 有了这个,我得到了第五class的所有学生 现在我也想对学生提交的另一个filter。 获取考试logging“结果”为“通过”的学生.result是ExamResult实体中学生的属性 我怎样才能在这个使用复合谓词? 如果我错了,请纠正我 任何帮助将不胜感激 谢谢

使用NSPredicate筛选大型NSArray

我有一个数组包含170kstring(字典中的单词)和一个string,看起来像“glapplega”。 我试图从string中提取单词“apple”(“apple”是数组中的单词)。 我还需要确保提取的单词至less有3个字符。 我现在的代码如下: NSPredicate *wordPredicate = [NSPredicate predicateWithFormat:@"'%@' contains[cd] SELF", string]; NSPredicate *lengthPredicate = [NSPredicate predicateWithFormat:@"SELF.length > 2"]; NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[wordPredicate, lengthPredicate]]; return [_words filteredArrayUsingPredicate:lengthPredicate]; 长度谓词在它自己的工作,但单词谓词不(它返回一个空的数组,尽pipe“苹果”是数组中的单词)。 我怀疑使用SELF作为谓词中的正确expression式可能存在问题,因为我发现所有示例都将它作为左expression式,尽pipe我无法确认这一点。 编辑 :我知道,这可能可以用正则expression式来完成(如这里所述),但希望有一种解决方法,因为正则expression式可以用这么大的数据集缓慢。

NSSortDescriptor和NSPredicate进行sorting和筛选

我有一个tableView有5个不同的可能的数据源,取决于一个标志对象(NSNumber *)dataSourceAssignment 。 我已经实现了一个NSSortDescriptor ,通过(float)confidenceRating dataSource进行sorting。 数据源被分配后,我需要能够通过(NSString *)genre过滤dataSource数组。 我知道如何使用NSPredicate来过滤我的数组,但我不知道如何有效地做到这一点,当有5-6不同genrestring可以检查。 用户能够“检查”多个stream派,基本上根据select的stream派切换轨道的显示。 我正在考虑在NSUserDefaults *defaults中创build一个字典,如下所示: ["genre1" = YES, "genre2" = NO, "genre3" = YES …] 。 如何设置NSPredicate以使用types字典过滤数据源,而无需使用带有条件负载的巨大if / switch语句。 这是我在执行NSPredicate之前的代码: – (void)assignDataSource { switch (dataSourceAssignment.intValue) { case 0: dataSource = [NSMutableArray arrayWithArray:tracksArray]; break; case 1: dataSource = [NSMutableArray arrayWithArray:favoriteTracks]; break; case 2: dataSource = [NSMutableArray arrayWithArray:topTracksOfTheWeek]; break; case […]

tableView:didSelectRowAtIndexPath:调用当前视图Parser委托

我有一些非常有趣的逻辑去,基本上我有这个数据,我想检查之前,我显示下一个视图..以防万一数据是空的我想popup视图,如果数据不是空的,那么我想加载视图以将其显示在导航堆栈上。 所以在我的tableView:didSelectRowAtIndexPath:方法中,当做出select时,获取当前的selectID号,这样我就可以限制数据Im的值去parsing到相关的值。 这就是我的方法里面的代码。 #pragma mark – Table view delegate – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ///… This stuff is for context.. //Get the subview ready for use VSRViewController *vSRViewController = [[VSRViewController alloc] initWithNibName:@"VSRViewController" bundle:nil]; //Sets the back button for the new view that loads (this overrides the usual parentview name with "Back") self.navigationItem.backBarButtonItem = [[UIBarButtonItem […]

如何使用NSPredicate使用今天的NSDate获取对象?

我困在我的核心数据模型和涉及date的提取请求的问题。 我有一个具有NSDate属性的实体中的一些对象; 我需要提取与今天的date对象,但我总是从这个代码无: public func getObjectsOfToday() -> Array<myObject>? { let entityDescription = NSEntityDescription.entityForName("Objects", inManagedObjectContext: DataAccess.sharedInstance.managedObjectContext) let request = NSFetchRequest() request.entity = entityDescription request.returnsObjectsAsFaults = false let today = NSDate() request.predicate = NSPredicate(format: "(dateStart => %@) AND (dateStart <= %@)", today, today) var objects: [AnyObject]? do { objects = try DataAccess.sharedInstance.managedObjectContext.executeFetchRequest(request) } catch let error as […]

NSPredicate不能使用计算字段

我有一个核心数据项目,难以用简单的计算字段search数据,不知道为什么它不工作。 我有一个导师实体,核心数据string属性“tutorFirstName”和“tutorLastName”。 我已经创build了一个额外的string属性“tutorFullName”,这是填充在一个类别中,如下所示: NSString *fullName = [@[self.tutorFirstName, self.tutorLastName] componentsJoinedByString:@" "]; 数据填充良好,但是当我执行以下search时,只有tutorFirstName和tutorLastName上的谓词工作: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tutorFirstName = %@", @"Sean"]; [fetchRequest setPredicate:predicate]; NSArray *fetchedObjects = [moc executeFetchRequest:fetchRequest error:&error]; NSLog(@"Search on %@ returned %lu items (%@)",predicate, (unsigned long)fetchedObjects.count, [fetchedObjects objectAtIndex:0]); predicate = [NSPredicate predicateWithFormat:@"tutorFullName = %@", @"Sean Silverman"]; [fetchRequest setPredicate:predicate]; fetchedObjects = [moc executeFetchRequest:fetchRequest error:&error]; NSLog(@"Search on […]

在iOS中的tableview中dynamicsearch

我有一个tableview和文本字段,我已经实现了search方法。 现在,当我在textfield写入一些值,然后单击searchbutton,然后在tableviewsearch。 但是,我希望它是dynamic的意思是我开始在textfieldinput的时候,它应该开始search而不点击任何button 。 我怎样才能做到这一点?