gpt4 book ai didi

objective-c - Xcode 4 中的 NSPredicateEditor

转载 作者:太空狗 更新时间:2023-10-30 03:40:19 26 4
gpt4 key购买 nike

Xcode 4 的谓词编辑器控件有点问题 - 我认为我做的一切都是正确的,而且 IDE 本身似乎真的被破坏了。

我在编写的应用程序中遇到了这个问题,但为了隔离它,我执行了以下操作:

创建一个带有窗口的新项目。在 XIB 编辑器中,向其中添加一个 NSPredicateEditor,并添加一行。将其保留为关键路径/字符串并添加两个关键路径 - “title”和“writer”。使其不区分大小写和变音符号。

创建 NSWindowController 的子类并为谓词编辑器添加 IBOutlet。

在awakeFromNib中,放入如下代码:

NSPredicate *myPredicate = [NSPredicate predicateWithFormat: @"(title CONTAINS[CD] %@) AND (writer CONTAINS[CD] %@)", @"", @""];

[_predicateEditor setObjectValue:myPredicate];

这会在控制台中产生以下内容:

2011-04-12 15:59:37.709 PredicateTest[38419:903] 警告 - 无法找到匹配谓词标题的模板 CONTAINS[cd] ""

2011-04-12 15:59:37.710 PredicateTest[38419:903] 警告 - 无法找到匹配谓词编写器的模板 CONTAINS[cd] ""

当我单击 (+) 按钮添加新行时,我得到以下信息:

2011-04-12 15:59:40.044 PredicateTest[38419:903] 无法使用 nil 运算符或表达式创建比较谓词。

我认为我在这里没有做错什么,这应该行得通吗?如果我将谓词编辑器行模板从关键路径中移开,然后将其切换回关键路径,并编辑关键路径列表,Xcode 会因内部一致性异常而崩溃,这让我觉得 Xcode 4 可能不符合标准谈到谓词编辑。

有人有什么想法吗?我试过在代码中创建一个 NSPredicateEditor 而不是 XIB 编辑器,并且无休止地乱搞无济于事。谓词编辑功能是阻止我向商店发布应用程序的全部原因,所以这有点烦人。

最佳答案

我知道这不是您想听到的答案,但我强烈建议以编程方式设置谓词编辑器。根据我的经验,在 IB 中进行设置并不是很直观。至少在代码中您可以明确地看到发生了什么。

NSArray *keyPaths = @[[NSExpression expressionForKeyPath:@"title"],
[NSExpression expressionForKeyPath:@"writer"]];
NSArray *operators = @[@(NSEqualToPredicateOperatorType),
@(NSNotEqualToPredicateOperatorType),
@(NSBeginsWithPredicateOperatorType),
@(NSEndsWithPredicateOperatorType),
@(NSContainsPredicateOperatorType)];

NSPredicateEditorRowTemplate *template = [[NSPredicateEditorRowTemplate alloc] initWithLeftExpressions:keyPaths
rightExpressionAttributeType:NSStringAttributeType
modifier:NSDirectPredicateModifier
operators:operators
options:(NSCaseInsensitivePredicateOption | NSDiacriticInsensitivePredicateOption)];

NSArray *compoundTypes = @[@(NSNotPredicateType),
@(NSAndPredicateType),
@(NSOrPredicateType)];
NSPredicateEditorRowTemplate *compound = [[NSPredicateEditorRowTemplate alloc] initWithCompoundTypes:compoundTypes];

[myPredicateEditor setRowTemplates:@[template, compound]];

关于objective-c - Xcode 4 中的 NSPredicateEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642681/

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