加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 列名称的NSPredicate问题

发布时间:2020-12-16 05:31:50 所属栏目:百科 来源:网络整理
导读:我正在尝试使用NSPredicate查询表.这本质上是我在做什么 NSNumber *value = [NSNumber numberWithInteger: 2];NSString *columnName = @"something_id";NSLog(@"%@ == %@",columnName,value);NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"%
我正在尝试使用NSPredicate查询表.这本质上是我在做什么
NSNumber *value = [NSNumber numberWithInteger: 2];
NSString *columnName = @"something_id";

NSLog(@"%@ == %@",columnName,value);
NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"%@ == %@",value];

NSLog打印出我的期望(“something_id == 2”),但谓词不起作用.
但是,如果我将更改为:

NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"something_id == %@",value];

那么为什么这不工作,我该怎么解决呢?

解决方法

The Predicate Programming Guide from Apple说:

%@ is a var arg substitution for an
object value—often a string,number,
or date.

%K is a var arg substitution
for a key path.

When string variables
are substituted into a format string
using %@,they are surrounded by
quotation marks. If you want to
specify a dynamic property name,use
%K in the format string.

所以,在你的情况下,你需要把%K作为一个关键字到columnName,而不是%@,它将被加上引号:

NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"%K == %@",value];

希望这清楚你的疑惑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读