NSPredicate中的调用选择器

问题描述:

我需要一种方法来调用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

这工作:

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