NSPredicate 中的调用选择器
Call selector within NSPredicate
我需要一种在 NSPredicate 中调用选择器的方法。我有一个 MyElement 对象数组。 MyElement 的一个 属性 是 "keywords",它只是一个字符串数组。目前我准备一个谓词来查找一组包含特定关键字的 MyElements(在每个 MyElement 的关键字数组中的某处):
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];
这需要在每个 MyElement 中调用 keywordsSpecialArray:key,这将 return 一个按摩数组。这个数组是数组的一个稍微修改的版本,它本来可以通过使用@"%@ IN 关键字returned"。
执行此操作的正确语法是什么?
这个有效:
predicate = [NSPredicate predicateWithFormat:@"%@ IN FUNCTION(self, 'keywordsSpecialArray:', %@)", value, key];
我需要一种在 NSPredicate 中调用选择器的方法。我有一个 MyElement 对象数组。 MyElement 的一个 属性 是 "keywords",它只是一个字符串数组。目前我准备一个谓词来查找一组包含特定关键字的 MyElements(在每个 MyElement 的关键字数组中的某处):
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];
这需要在每个 MyElement 中调用 keywordsSpecialArray:key,这将 return 一个按摩数组。这个数组是数组的一个稍微修改的版本,它本来可以通过使用@"%@ IN 关键字returned"。
执行此操作的正确语法是什么?
这个有效:
predicate = [NSPredicate predicateWithFormat:@"%@ IN FUNCTION(self, 'keywordsSpecialArray:', %@)", value, key];