Мой код
isFiltering = true
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let words = textInSearchField.components(separatedBy: " ")
for word in words{
if (word).count == 0{
continue
}
let firstNamePredicate = NSPredicate(format: "firstName contains[c] %@", word)
let lastNamePredicate = NSPredicate(format: "lastName contains[c] %@", word)
let idPredicate = NSPredicate(format: "id contains[c] %@", word)
let orPredicate = NSCompoundPredicate(type: NSCompoundPredicate.LogicalType.or, subpredicates: [firstNamePredicate, lastNamePredicate, idPredicate])
clientsEntity.predicate = orPredicate
clientResults = try! context.fetch(clientsEntity) as! [NSManagedObject]
let sort:NSSortDescriptor = NSSortDescriptor(key:"dateSorted", ascending: false)
for (index, ob) in clientResults.enumerated(){
let relationship = ob.value(forKey: "assessed_by") as! NSSet
let array = relationship.sortedArray(using: [sort]) as! [NSManagedObject]
for item in array.enumerated() {
results.append(item.element)
print(results)
}
}
Моя модель данных:
Я использую tableView для отображения моих данных, которые прекрасно работают, теперь я реализовал функцию фильтра, которая позволяет пользователю осуществлять поиск по имени, фамилии, идентификатору клиента и т. Д., Используя NSCompoundPredicate.
Затем я сортирую результирующий [NSManagedObject] по дате, используя NSSortDescriptor, моя цель - установить мою переменную clientResults для содержания SORTED содержимого NSSet. Мой оператор печати выводит только то, что в переменной результатов есть одна оценка, когда в действительности NSSet содержит два из этих объектов NSManagedObject.
let sort:NSSortDescriptor = NSSortDescriptor(key:"dateSorted", ascending: false)
for (index, ob) in clientResults.enumerated(){
let relationship = ob.value(forKey: "assessed_by") as! NSSet
let array = relationship.sortedArray(using: [sort]) as! [NSManagedObject]
// MARK - I enumerate the contents of the sorted array.
for item in array.enumerated() {
results.append(item.element)
print(results)
}
}
Как лучше всего присваивать содержимое NSSet переменной типа [NSManagedObject]?
Спасибо.