2017-10-20 68 views
0

我需要一種方法來調用NSPredicate中的選擇器。我有一個MyElement對象的數組。 MyElement的一個屬性是「關鍵字」,它只是一串字符串。目前,我準備一個謂語找到一組包含特定關鍵字(介於每MyElement的關鍵字排列)MyElements的:NSPredicate中的調用選擇器

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%@ IN keywords", someString]; 

由於關鍵字是MyElement(類型的NSArray的)的屬性這一切的偉大工程。但是,現在我需要在數組返回謂詞之前對其進行一些操作。例如:

NSString* key = // a key used to help shape the array 
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%@ IN keywordsSpecialArray:key", someString]; 

這需要調用keywordsSpecialArray:每個MyElement中的鍵,它將返回一個按摩數組。該數組是數組的稍微修改過的版本,只需使用@「%@ IN關鍵字」就可以返回該數組。

什麼是正確的語法來做到這一點?

+0

如果'key'是'MyElement'您可以添加計算屬性'massagedKeywords'返回'[自keywordsSpecialArray:self.key]屬性'。 – Willeke

+0

不是。這並不是真的很重要,但上面是一個簡化版本。實際上,MyElement有一個名爲userFields的屬性,它是一個使用UUID作爲鍵和NSString作爲值的NSDictionary。 MyElement實現valueForUndefinedKey來獲取這些字段,這些字段只是查找我的字典中的值。有時候我想把這個字段直接作爲一個字符串,但有時候我需要把它作爲一個數組來處理。 keywordsSpecialArray:key應該爲key獲取字段字符串(通過valueForUndefinedKey),然後將結果按摩到特殊的數組中。 – Trygve

+0

我最終得到:無法解析格式字符串「%@ IN keywordsSpecialArray:%K」。請注意,「密鑰」必須是動態的,因此必須是%K。 – Trygve

回答

0

這工作:

predicate = [NSPredicate predicateWithFormat:@"%@ IN FUNCTION(self, 'keywordsSpecialArray:', %@)", value, key]; 
相關問題