gpt4 book ai didi

objective-c - NSPredicateEditor & NSExpression - 显示可以不同于谓词的值吗?

转载 作者:太空狗 更新时间:2023-10-30 03:41:18 24 4
gpt4 key购买 nike

我有一个谓词编辑器,模板是通过以下方式生成的:

    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)];

所以如果我像这样填写谓词编辑器: Predicate Editor

当我注销生成的谓词时,我得到:

Abc CONTAINS[cd] "abc"或 Def CONTAINS[cd] "def"

我想知道是否可以以某种方式让谓词编辑器模板显示与生成的谓词中设置的值不同。

例如:我希望输出谓词具有:

Field1 CONTAINS[cd] "abc"OR Field2 CONTAINS[cd] "def"

即使编辑器仍然显示 abcdef 作为字段。这可能吗?

最佳答案

是的,你可以做到这一点。

您希望左侧表达式数组成为最终谓词中的实际 keyPaths。在您的例子中,"Field1""Field2"

关于在弹出窗口中显示不同的值,这是一个令人费解的概念:

您要将谓词编辑器本地化为英文

有两种方法可以做到这一点。

  1. 使用 .strings 文件
  2. 使用 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 时,您将设置 formattingStringsFileName属性到 “PredicateEditor”,编辑器将处理其余部分。

使用NSDictionary

这将遵循与 .strings 选项相同的基本概念,除了您实际上会这样做:

NSDictionary *formatting = @{
@"%[Field1]@ %[contains]@ %@" : @"%[Abc]@ %[contains]@ %@",
@"%[Field2]@ %[contains]@ %@" : @"%[Def]@ %[contains]@ %@"
}
[myPredicateEditor setFormattingDictionary:formatting];

这就是您所要做的。

blogged about this很久以前,其中包含更多您可能会觉得有用的信息。

关于objective-c - NSPredicateEditor & NSExpression - 显示可以不同于谓词的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com