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

Posted

技术标签:

【中文标题】iOS 核心数据 - NSFetchRequest 和 NSPredicate 不允许双重格式?【英文标题】:iOS Core Data - NSFetchRequest and NSPredicate not allowing double format? 【发布时间】:2013-08-22 14:45:17 【问题描述】:

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

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

在本例中,LEVEL_NAME_KEY = @"levelName"_levelName 是函数参数。 我想这样做,所以如果我更改我的键名,我可以通过仅更改 LEVEL_NAME_KEY 在标题中更改它。但它不起作用(当我执行 fetch 时它什么也不返回)。

但是,当我这样写时:

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

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

有人对此有意见吗?这是一个已知的错误吗?有什么解决办法吗?

提前致谢!

【问题讨论】:

【参考方案1】:

格式应指定为:

@"%K == %@"

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

Associated docs

【讨论】:

天哪,我怎么错过了?哈哈,也非常感谢你的链接;)

以上是关于iOS 核心数据 - NSFetchRequest 和 NSPredicate 不允许双重格式?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 fetchRequest 给出 executeFetchRequest:error: <null> is not a valid NSFetchRequest

核心数据 - NSFetchRequest 问题

核心数据 NSFetchrequest 整数

默认情况下,核心数据获取(NSFetchRequest)是不是以任何特定方式排序?

使用 NSPredicate 的特定对象内的核心数据 NSFetchRequest

iPhone 核心数据 NSFetchRequest