iOS 核心数据 - NSFetchRequest 和 NSPredicate 不允许双重格式?

标签 ios core-data nspredicate nsfetchrequest

当我尝试获取具有特定属性的 NSManagedObject 时,我遇到了一个非常奇怪的错误。这是我所做的:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ == %@", LEVEL_NAME_KEY, _levelName];

在此示例中,LEVEL_NAME_KEY = @"levelName"_levelName 是函数参数。 我想这样做,所以如果我更改我的键名,我可以通过仅更改 LEVEL_NAME_KEY 在 header 中更改它。但它不起作用(当我执行提取时它不返回任何内容)。

但是,当我这样写的时候:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"levelName == %@", _levelName];

一切正常,我得到了正确的 NSManagedObject。

有人对此有意见吗?这是一个已知错误吗?是否有解决方案?

提前致谢!

最佳答案

格式应指定为:

@"%K == %@"

因为您需要区分键名和参数值(在创建谓词时会引用它们)。

Associated docs

关于iOS 核心数据 - NSFetchRequest 和 NSPredicate 不允许双重格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383718/

相关文章:

ios - 在 Objective-C 中传回 NSManagedObject

ios - 核心数据无明显原因恢复到以前的状态

cocoa - 核心数据 : Inverse relationship only mirrors when I edit the mutableset. 不知道为什么

ios - 按日期过滤 hh :mm using NSPredicate

objective-c - 我可以使用 NSPredicate 作为 NSDictionary 中的键吗

ios - 我如何从 viewdidload 函数中的 GET 请求函数快速排列

objective-c - 错误 : missing @end error: expected identifier or

ios - 使用SSZipArchive解压缩文件而不解压缩zip文件

ios - 在 IOS 中使用 NSPredicate 按数组的一个元素过滤数组的 NSArray

ios - 在嵌套的 NSManagedObjectContext 中缓慢删除和保存