在单个对象上使用NSPredicate

时间:2015-10-09 19:03:09

标签: cocoa-touch nspredicate

如何评估单个对象上的NSPredicate

例如:

myLabel.matchesPredicate(NSPredicate(format: "numberOfLines > 2 && enabled == YES"))

...如果numberOfLines大于2且标签已启用,则应返回YES。

2 个答案:

答案 0 :(得分:0)

Objective-C答案;我不太了解Swift以使语法接近正确:

UILabel *matchingLabel = [@[ myLabel ] filteredArrayUsingPredicate:[NSPredicate ...]].lastObject;

答案 1 :(得分:0)

尝试这样的事情:

let predicate = NSPredicate(...)
let matchesPredicate = [myLabel].filter{ predicate.evaluateWithObject($0) }.count > 0

或更简单

let predicate = NSPredicate(...)
let matchesPredicate = predicate.evaluateWithObject(myLabel)

注意myLabel周围的方括号以创建单个元素数组,然后我们可以根据您的谓词进行过滤。如果myLabel与条件不匹配,则过滤后数组的大小将为零,否则为。