0

我想做这样的事情:

NSPredicate(format: "name contains[cd] %@ AND (position == %@ OR position == %@), name, position1, position2)

但是,我已经尝试过了,但我不断收到严重的 Core Data 应用程序错误。然后我尝试使用 NSCompoundPredicate,但我也不能在那里组合“AND”和“OR”。

我已经阅读了 NSPredicate 中的 Combining 'AND' and 'OR' Condition ,不同之处在于提问者想要在子集合上使用“OR”,因此答案涉及我不想要的子查询。

我该怎么做呢?

4

1 回答 1

1

我没有足够的声誉发表评论。您发布的内容应该有效。发布更多代码以识别确切问题可能会有所帮助。

希望它可以帮助您解决问题,我将发布一个工作示例,其中包含ANDOR

let alice = Person(firstName: "Alice", lastName: "Smith", age: 24, position: "Up")
let bob = Person(firstName: "Bob", lastName: "Jones", age: 27, position: "Left")
let charlie = Person(firstName: "Charlie", lastName: "Smith", age: 33, position: "Right")
let quentin = Person(firstName: "Quentin", lastName: "Alberts", age: 31, position: "Down")
let people = [alice, bob, charlie, quentin]

let predicate = NSPredicate(format: "firstName contains[cd] %@ AND (position == %@ OR position == %@)", "e", "Up", "Down")
let filtered = (people as NSArray).filteredArrayUsingPredicate(predicate)

print(filtered)

// prints [Alice Smith, Quentin Alberts]
于 2016-05-15T02:27:43.843 回答