use*_*805 2 core-data objective-c nspredicate nsfetchrequest
我在一个实体上有一个布尔attr,生成的代码是:
@property (nonatomic, retain) NSNumber * countdownMode;
@dynamic countdownMode;
Run Code Online (Sandbox Code Playgroud)
实体保存为:
score.countdownMode = @(YES);
Run Code Online (Sandbox Code Playgroud)
fetchRequest具有以下谓词:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"countdownMode == YES"];
Run Code Online (Sandbox Code Playgroud)
由于某种原因,获取永远不会返回任何东西..任何想法?删除谓词后,将获取行.在调试器中我可以看到countdownMode是1.我也试过这些没有成功:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"countdownMode == %@", @YES];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"countdownMode == %d", YES];
Run Code Online (Sandbox Code Playgroud)
这似乎应该很简单,但它不会返回任何结果.感谢帮助.
所有这些完全相同.
@"count = 1"
@"count = true"
@"count = YES"
@"count = %@", @YES
@"count = %@", [NSNumber numberWithBool:YES]
// plus all these versions with "=="
Run Code Online (Sandbox Code Playgroud)
除了简洁和清楚的原因之外,这些都不是优选的.对SQLite数据库的调用结果将完全相同,因此在效果,安全性或性能方面绝对没有区别.
看一下,SQLite数据库存储"1".(这是一个可以改变的实现细节,所以不要依赖它.但是,出于所有实际目的,它并不重要).
此外,@YES和[NSNumber numberWithBool:YES]是完全一样的.前者是"现代目标C"引入的一种新的文字符号形式.
因此,没有记录的原因必须是不同的.检查您的托管对象上下文是否不是nil; 如果没有另一个谓词限制结果; 如果你显示的结果与你认为你获得的结果不同; 如果在执行获取之前没有意外更改数据; 如果你忘记save在正确的地方打电话等
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |