NSArray * test = [NSArray arrayWithObjects: [NSExpression ExpressionForKeyPath: @"Abc"],[NSExpression ExpressionForKeyPath: @"Def"],nil]; nspredicateeditorRowTemplate * template = [[nspredicateeditorRowTemplate alloc] initWithleftExpressions: test rightExpressionAttributeType: NsstringAttributeType modifIEr: NSDirectPredicateModifIEr operators: [NSArray arrayWithObject: [NSNumber numberWithUnsignedInteger:NSContainspredicateOperatorType]] options:(NSCaseInsensitivePredicateOption|NSDiacriticInsensitivePredicateOption)];
所以,如果我填写这样的谓词编辑器:
当我注销生成的谓词时,我得到:
Abc CONTAINS [cd]“abc”或Def Def CONTAINS [cd]“def”
我想知道的是,如果我能以某种方式让谓词编辑器模板显示与生成的谓词中设置的值不同.
EX:我希望输出谓词具有:
FIEld1 CONTAINS [cd]“abc”或FIEld2 CONTAINS [cd]“def”
即使编辑器仍然显示abc和def作为字段.这可能吗?
解决方法 是的,你可以这样做.您希望左表达式数组是最终谓词中的实际keyPath.在您的情况下,“FIEld1”和“FIEld2”.
至于在d出窗口中显示不同的值,这里是一个令人费解的概念:
您将要将谓词编辑器本地化为英语.
有两种方法可以做到这一点.
>使用.strings文件
>使用NSDictionary
使用.strings文件
在您的来源中,您将在评论中包含以下内容:
// NSLocalizedStringFromtable(@"%[FIEld1,FIEld2]@ %[contains]@ %@",@"PredicateEditor",@"")
当您在源代码上运行genstrings
时,这将生成一个PredicateEditor.strings文件,其中包含以下条目:
"%[FIEld1]@ %[contains]@ %@" = "%[FIEld1]@ %[contains]@ %@";"%[FIEld2]@ %[contains]@ %@" = "%[FIEld2]@ %[contains]@ %@";
您可以将值更改为:
"%[FIEld1]@ %[contains]@ %@" = "%[Abc]@ %[contains]@ %@";"%[FIEld2]@ %[contains]@ %@" = "%[Def]@ %[contains]@ %@";
然后,当您创建nspredicateeditor时,您将@L_403_1@属性设置为“PredicateEditor”,编辑器将负责其余的工作.
使用NSDictionary
这将遵循与.strings选项相同的基本概念,除了您基本上会这样做:
NSDictionary *formatting = @{ @"%[FIEld1]@ %[contains]@ %@" : @"%[Abc]@ %[contains]@ %@",@"%[FIEld2]@ %[contains]@ %@" : @"%[Def]@ %[contains]@ %@"}[myPredicateEditor setFormattingDictionary:formatting];
这就是你要做的一切.
很久以前的我blogged about this,有更多你可能会觉得有用的信息.
总结以上是内存溢出为你收集整理的objective-c – NSPredicateEditor&NSExpression – 显示是否可以与谓词的值不同?全部内容,希望文章能够帮你解决objective-c – NSPredicateEditor&NSExpression – 显示是否可以与谓词的值不同?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)