NSPredicateEditor (NSRuleEditor のサブクラス) を使用して、NSPredicate を簡単に作成できます。私が知りたいのはこれです:
既存の NSPredicate (エディターによって作成されたもの) を取得し、エディターに再読み込みして変更できるようにするにはどうすればよいですか?
編集: setObjectValue: を使用するという @John の提案を試しましたが、うまくいきませんでした。私のセットアップをもう少し説明しましょう:
私はドキュメントベースのココア アプリを持っており、ドキュメント ウィンドウには 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 に読み込まれません。(はい、predicateEditor は IBOutlet として接続されています)