我有一个带有NSDate属性的Core Data模型.我想白天过滤数据库.我认为解决方案将涉及一个NSPredicate,但我不知道如何将它们放在一起.
我知道如何比较NSDate使用NSDateComponents和的两天的日子NSCalendar,但是如何用一个NSPredicate?
也许我需要在我的NSManagedObject子类上创建一个类别,它可以返回只有年,月和日的裸日期.然后我可以比较一下NSPredicate.这是你的推荐,还是有更简单的东西?
core-data objective-c nsdate nspredicate nsfetchedresultscontroller
我有一系列字典.
我想基于密钥过滤数组.
我试过这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == %@)", @"Football"];
NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
这不起作用,我没有结果.我想我做错了什么.我知道如果"SPORT"是一个ivar,这就是方法.我认为如果它是关键的话可能会有所不同.
然而,我无法找到一个例子.
谢谢
更新
我在我正在搜索的字符串周围添加了引号.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == '%@')", @"Football"];
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作.
更新2
解决了它.我实际上不得不删除单引号,这似乎与指南所说的相反.
我真正的问题是我有一个嵌套数组,我实际上并没有评估字典.骨头移动.
我有一个NSArray,我想使用NSPredicate过滤掉某些对象,我希望我可以使用NOT IN,因为我看到我可以很容易地进行IN.
所以我有我的阵列:
self.categoriesList
Run Code Online (Sandbox Code Playgroud)
然后我得到了我想删除的值:
NSArray *parentIDs = [self.cateoriesList valueForKeyPath:@"@distinctUnionOfObjects.ParentCategoryID"];
Run Code Online (Sandbox Code Playgroud)
这给了我一个我不想显示的类别的ParentCategoryID列表,所以我想我可以使用NSPredicate来删除它们:
self.cateoriesList = [self.cateoriesList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"CategoryID NOT IN %@",parentIDs]];
Run Code Online (Sandbox Code Playgroud)
这失败了:
reason: 'Unable to parse the format string "CategoryID NOT IN %@"'
Run Code Online (Sandbox Code Playgroud)
如果我想使用IN,那当然是完美的.
在iOS 9中不推荐使用AddressBook框架的大部分内容.在新的Contacts Framework 文档中,只显示了如何获取与a匹配的记录NSPredicate,但如果我想要所有记录呢?
我有一个NSArray并且需要过滤掉任何null的字符串,或者更确切地说,有''(空字符串).我怎么做?我试过做:
NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"(name!=nil)"];
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.或许它确实如此,但有不同种类的空...
我有两个名为"Category"和"Article"的实体,它们有很多关系.我想形成一个谓词,搜索category.name等于某个值的所有文章.我有以下内容:
NSEntityDescription *entityArticle = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:managedObjectContext];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"categories.name == [cd] %@", category.name];
[request setSortDescriptors:sortDescriptors];
[request setEntity:entityArticle];
[request setPredicate:predicate];
NSMutableArray *results = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy];
if ([results count] > 0)
NSLog(@"Results found.");
else
NSLog(@"NO results found.");
[request release];
[sortDescriptor release];
[sortDescriptors release];
Run Code Online (Sandbox Code Playgroud)
我收到的错误是 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'
有没有选择来检索所需的数据?
我有NSArray一个自定义类的对象.该类有3个(city,state,zip)字符串属性.我想从中得到所有独特的状态值array.
我确实通读了这个NSPredicate课程,但在这种情况下无法充分利用它.我能找到的唯一例子是字符串操作.
有人可以帮帮我吗?
如何在NSSet或NSArray中搜索具有特定属性特定值的对象?
示例:我有一个包含20个对象的NSSet,并且每个对象都有一个type属性.我想获得第一个拥有的对象[theObject.type isEqualToString:@"standard"].
我记得有可能以某种方式使用谓词来表示这种东西,对吗?
我有一个ManagedObject class,而且班上的一个成员是一个NSDate.我想显示未设置日期的类的所有对象.我尝试使用这样的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(date = NIL)"];
Run Code Online (Sandbox Code Playgroud)
但我仍然得到date设置的对象.为此设置谓词的正确方法是什么?
我正在寻找一种方法NSPredicate来设置LIKE条件来获取对象.除此之外,一个OR也是有用的.我正在尝试做一些事情,如果用户搜索"詹姆斯"我可以写一个NSPredicate将做相当于:
select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
Run Code Online (Sandbox Code Playgroud) nspredicate ×10
objective-c ×6
ios ×4
nsarray ×4
core-data ×3
iphone ×3
cocoa ×2
cocoa-touch ×1
contacts ×1
ios9 ×1
nsdate ×1
nsdictionary ×1
nsset ×1