Вам нужно будет изменить %@
для %i
и удалить лишнюю скобку:
Главная проблема здесь заключается в том, что вы кладете в Int
, где он ожидает String
.
Вот пример, основанный на этом post:
class Person: NSObject {
let firstName: String
let lastName: String
let age: Int
init(firstName: String, lastName: String, age: Int) {
self.firstName = firstName
self.lastName = lastName
self.age = age
}
override var description: String {
return "\(firstName) \(lastName)"
}
}
let alice = Person(firstName: "Alice", lastName: "Smith", age: 24)
let bob = Person(firstName: "Bob", lastName: "Jones", age: 27)
let charlie = Person(firstName: "Charlie", lastName: "Smith", age: 33)
let quentin = Person(firstName: "Quentin", lastName: "Alberts", age: 31)
let people = [alice, bob, charlie, quentin]
let thisSection = 33
let thisPredicate = NSPredicate(format: "age == %i", thisSection)
let _people = (people as NSArray).filteredArrayUsingPredicate(thisPredicate)
_people
Другое решение было бы сделать значение thisSection
«s String
, это может быть достигнуто путем Струнный Интерполяция или через description
свойство Int
.. позволяет сказать:
Изменение:
let thisPredicate = NSPredicate(format: "age == %i", thisSection)
для
let thisPredicate = NSPredicate(format: "age == %@", thisSection.description)
или
let thisPredicate = NSPredicate(format: "age == %@", "\(thisSection)")
конечно, вы всегда можете пропустить этот шаг и перейти к чему-то более жестко (но и правильный), как:
let thisPredicate = NSPredicate(format: "sectionNumber == \(thisSection)")
Но учтите, что по какой-то странной причине String Interpolation (этого вида структуры:"\(thisSection)"
), где ведущий сохранить циклы, как указано here
У вас есть дополнительная открывающая скобка, которые не должно быть там –
я не знаю, почему он показывает дополнительную скобку выше, потому что это не то, что у меня есть: var thisPredicate = NSPredicate (format: "(sectionNumber ==% @)", thisSection) – PatriciaW
@PatriciaW Проблема в вашем вопросе заключалась в том, что вы пропустили скобки закрытия после ** @ ** , Кстати, я отредактировал свой предыдущий ответ, возможно, вам стоит взглянуть на некоторые соображения, которые я добавил. –