0
我有一個具有以下屬性的NSManagedObject
被逆轉:NSPredicate與格式有當兩個格式字符串使用
- 狀態
- 樣
- 優先
現在我想能夠分別使用這些屬性過濾我的實體。所以,我希望,我必須有這些方針謂詞:
status CONTAINS[c] ‘open’
我變得很怪異的結果,只要我有我的斷言兩個變量,我必須反向的kind
順序和value
在我的情況,讓我得到想要的結果:
NSString *kind = @"status"; // DEBUGGING
NSString *value = @"open"; // DEBUGGING
// This works although it defies all logic
NSString *predicate = [NSString stringWithFormat:@"('%@' CONTAINS[c] %@)", value, kind];
self.myFilterPredicate = [NSPredicate predicateWithFormat:predicate];
然而,這不適用於某些原因:
NSString *predicate = [NSString stringWithFormat:@"(%@ CONTAINS[c] ‘%@‘)」, kind, value];
我無法重現您的問題。第一個謂詞字符串導致崩潰。第二個謂詞不會編譯,因爲它包含印刷引號而不是簡單的引號。修復之後,第二個謂詞字符串起作用並給出預期的結果。 - 但是,正確的方法是使用'self.myFilterPredicate = [NSPredicate predicateWithFormat:@「%K ==%@」,kind,value];'。 –
@MartinR對於那些角色很抱歉。你能告訴我在這個例子中'%K'做了什麼嗎? – Besi