Xcode 4 の述語エディター コントロールに少し問題があります - 私はすべてを正しく行っていると思いますが、IDE 自体が壊れているようです。
私が書いているアプリでこの問題が発生していますが、それを特定するために、次のことを行いました。
ウィンドウで新しいプロジェクトを作成します。XIB エディターで、それに NSPredicateEditor を追加し、1 行追加します。キーパス/文字列のままにして、「タイトル」と「ライター」の 2 つのキーパスを追加します。大文字と小文字を区別しないようにします。
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] 警告 - テンプレートに一致する述語ライターが見つかりません [cd] ""
(+) ボタンをクリックして新しい行を追加すると、次のようになります。
2011-04-12 15:59:40.044 PredicateTest[38419:903] nil 演算子または式で比較述語を作成できません。
ここで何も悪いことをしていないと思うのは正しいですか、これはうまくいくはずですか? 述語エディターの行テンプレートをキー パスから変更してからキー パスに戻し、キー パスのリストを編集すると、Xcode が内部整合性例外でクラッシュします。述語編集になります。
誰でもアイデアはありますか?私は XIB エディタではなくコードで NSPredicateEditor を作成しようとしましたが、無駄に終わりませんでした。アプリをストアにリリースするのを妨げているのは述語編集機能だけなので、これはちょっと面倒です。