Nic*_*ing 6 macos cocoa objective-c nspredicateeditor xcode4
Xcode 4的谓词编辑器控件存在一些问题 - 我认为我做的一切都是正确的,而且看起来IDE本身就被破坏了.
我在我正在编写的应用程序中遇到此问题,但为了隔离它,我执行了以下操作:
使用窗口创建新项目.在XIB编辑器中,向其添加NSPredicateEditor,并添加一行.将其保留为关键路径/字符串,并添加两个关键路径 - "标题"和"编写者".使它成为案例和变音不敏感.
创建NSWindowController的子类并为谓词编辑器添加IBOutlet.
在awakeFromNib中,输入以下代码:
NSPredicate*myPredicate = [NSPredicate predicateWithFormat:@"(标题CONTAINS [CD]%@)AND(作者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可能不符合要求它涉及到谓词编辑.
有人有任何想法吗?我已经尝试在代码而不是XIB编辑器中创建NSPredicateEditor,并且无休止地搞乱无济于事.谓词编辑功能正在阻止我向商店发布应用程序,所以这有点令人烦恼.
Dav*_*ong 11
我知道这不是你想听到的答案,但我强烈建议以编程方式设置谓词编辑器.根据我的经验,在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]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2513 次 |
| 最近记录: |