雖然基於用戶輸入過濾我的NSMutableDictionary工作,我創建了下面的代碼:NSPredicate predicateWithFormat:(NSString *)不一致?
NSString *predicateString = [NSString stringWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSPredicate *pred = [NSPredicate predicateWithFormat:predicateString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
「搜索字符串」傳遞到這個定義的方法:
(NSString*) searchString
然而,這導致以下例外情況如下:
... raise [valueForUndefinedKey:]:該類別爲 對於ke不符合密鑰值Y ...
的修復竟然是:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
我不明白,這就是爲什麼後者的工作,和前拋出異常。我已閱讀key value coding一點點,但我不明白它在這裏如何適用。 (即只是通過改變NSPredicate的定義)有人能夠啓發我嗎?
更新: 爲了迴應jtbandes評論,我繼續創建了一個TestApp項目來演示此問題。 http://dl.dropbox.com/u/401317/TestApp1.tar.gz
如果你希望我們弄清楚它的含義,你將不得不向我們展示整個異常。 – jtbandes