yjw*_*w44 14 core-data nspredicate ios
我想找出核心数据中的对象,我的代码:
类型:
signedDate (日期)
alarmDate(日期)
starTime(的NSDate)
endTime(的NSDate)
NSString *str = @"(signedDate >= %@) AND (signedDate < %@) AND (alarmDate == nil)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:str, starTime, endTime];
[request setPredicate:predicate];
NSArray *results=[context executeFetchRequest:request error:nil];
Run Code Online (Sandbox Code Playgroud)
谓词错了?如何判断coredata对象是否为零?谓词应该是什么?
mpr*_*vat 22
我不认为谓词语法要求== nil.只使用一个=
NSString *str = @"(signedDate >= %@) AND (signedDate < %@) AND (alarmDate = nil)";
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.它应该是YES,因为它是零.
BOOL ok;
predicate = [NSPredicate predicateWithFormat:@"firstName = nil"];
ok = [predicate evaluateWithObject:[NSDictionary dictionary]];
ok = [predicate evaluateWithObject:
[NSDictionary dictionaryWithObject:[NSNull null] forKey:@"firstName"]];
Run Code Online (Sandbox Code Playgroud)
来自苹果文档
测试Null
如果要匹配空值,除了其他比较之外,还必须包括特定测试,如以下片段所示.
predicate = [NSPredicate predicateWithFormat:@"(firstName == %@) || (firstName = nil)", firstName];
filteredArray = [array filteredArrayUsingPredicate:predicate];
NSLog(@"filteredArray: %@", filteredArray);
// Output:
// filteredArray: ( { lastName = Turner; }, { birthday = 1972-03-23 20:45:32 -0800; firstName = Ben; lastName = Ballard; }
Run Code Online (Sandbox Code Playgroud)
通过暗示,与null值匹配的null测试返回true.在以下代码片段中,对于两个谓词评估,ok都设置为YES.
BOOL ok;
predicate = [NSPredicate predicateWithFormat:@"firstName = nil"];
ok = [predicate evaluateWithObject:[NSDictionary dictionary]];
ok = [predicate evaluateWithObject:
[NSDictionary dictionaryWithObject:[NSNull null] forKey:@"firstName"]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17274 次 |
| 最近记录: |