我可以使用 NSPredicateEditor(NSRuleEditor 的子类)轻松创建 NSPredicate。我想知道的是:
如何获取现有的 NSPredicate(由编辑器创建的)并将其重新加载到编辑器中以便我可以更改它?
编辑:我尝试了@John 的使用 setObjectValue: 的建议,但这并不太奏效。让我再解释一下我的设置:
我有一个基于 Document 的 cocoa 应用程序,并且 Document 窗口上只有一个 NSPredicateEditor。在dataOfType:error:
方法中,我有:
NSPredicate * pred = [predicateEditor objectValue];
NSData * predicateData = [NSKeyedArchiver archivedDataWithRootObject:pred];
return predicateData;
在readFromData:ofType:error:
方法中,我有:
NSPredicate * pred = [NSKeyedUnarchiver unarchiveObjectWithData:data];
[predicateEditor setObjectValue:pred];
return (pred != nil);
我已验证谓词已正确存档和取消存档,但在打开保存的谓词后,谓词未加载到谓词编辑器中。(是的,predicateEditor 连接为 IBOutlet)