В настоящее время я пишу приложение простой телефонной книги в Swift и вам нужно отсортировать результаты из запроса CoreData.Сортировка результатов CoreData с использованием NSPredicate в Swift
В принципе, я создал объект NSManagedObject, называемый «Directory», с соответствующими именами полей в - например. «name_f» - это имя пользователя.
Имена в базе данных CoreData, которые запрашиваются, указаны в алфавитном порядке. Однако, хотя первый поиск возвращает результаты в алфавитном порядке, дальнейшие поисковые запросы иногда возникают после того, как база данных была запрошена другими областями программы. Я не уверен, почему это так, но хочу добавить код для активного сортировки возвращаемого массива в любом поле.
Мой код, который возвращает массив NSManagedObject выглядит следующим образом:
func SearchName(nameToSearch: String) -> NSArray {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext! //I added the !
let request = NSFetchRequest(entityName: "Directory")
request.returnsObjectsAsFaults = false //will return the instance of the object
//request.predicate = NSPredicate(format: "name_f = %@", nameToSearch)
//request.predicate = NSPredicate(format: "name_f MATCHES '.*(\(nameToSearch)).*'")
request.predicate = NSPredicate(format: "name_f MATCHES[cd] '(\(nameToSearch)).*'")
var results:NSArray = context.executeFetchRequest(request, error: nil)
return results
}
Как и в сторону, я использую следующий код, чтобы тянуть конкретное значение из возвращаемых результатов (где SEARCHRESULT является экземпляром класс SearchName в):
var particularEntry = self.searchResult[self.selectedItem] as Directory
lblDetailName.text = thisPerson.name_f
в идеале, я хотел бы быть в состоянии: 1 - Изменить код, чтобы убедиться, что массив «результатов» отсортирован соответствующим образом. 2 - Определите код, который впоследствии может быть применен к массиву результатов для повторной сортировки по любому полю.
Заранее благодарен!
Вы должны взглянуть на 'sortDescriptors' свойство' NSPredicate'? В «Руководстве по программированию основных данных» также много примеров (в Objective-C), см. Https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/DOC/UID/TP40002484-SW1. –
sortDescriptors - свойство NSFetchRequest. Я не думаю, что у NSPredicate есть такая собственность. – Sandeep
@ insane-36: Вы правы, я имел в виду NSFetchRequest. –