Сортировка в CoreData (swift) - PullRequest
       8

Сортировка в CoreData (swift)

0 голосов
/ 04 апреля 2020

Как я могу использовать сортировку в CoreData? Я хочу отсортировать их по свойству, которое является временем

Я также хочу использовать эти два потока. Кто-то знает, как использовать эти два:

fetchOffset <========== </p>

fetchLimit <=========== </p>

final class PersistantManager {
private init(){}
static let shared = PersistantManager()
// MARK: - Core Data stack

 lazy var persistentContainer: NSPersistentContainer = {

     let container = NSPersistentContainer(name: "_chans_")
     container.loadPersistentStores(completionHandler: { (storeDescription, error) in
         if let error = error as NSError? {

             fatalError("Unresolved error \(error), \(error.userInfo)")
         }
     })
     return container
 }()

lazy var context = persistentContainer.viewContext
 // MARK: - Core Data Saving support

 func save () {
     let context = persistentContainer.viewContext
     if context.hasChanges {
         do {
             try context.save()
            print("success save")
         } catch {

             let nserror = error as NSError
             fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
         }
     }
 }
func fetch<T: NSManagedObject>(_ objectType : T.Type) -> [T] {
    let entityname = String(describing: objectType)
    let fetchrequest = NSFetchRequest<NSFetchRequestResult>(entityName: entityname)
    do {
        let fetchedobject = try context.fetch(fetchrequest) as? [T]
        return fetchedobject ?? [T]()
    }catch{
        print(error)
        return [T]()
    }

}

}

и мой код для выборки:

guard let Bookmarks = try! PersistantManager.shared.context.fetch(HistoryBookmarks_Coredata.fetchRequest()) as? [HistoryBookmarks_Coredata] else {return}

1 Ответ

1 голос
/ 05 апреля 2020

Все, что вам нужно сделать, это установить дескрипторы сортировки запроса на выборку.

// replace "key" with the property you want to sort by
let sort = NSSortDescriptor(key: "key", ascending: false)
let fetchrequest = NSFetchRequest<NSFetchRequestResult>(entityName: entityname)
fetchrequest.sortDescriptors = [sort]

fetchLimit указывает максимальное количество записей для выборки.

fetchOffset позволяет пропустить указанное количество строк.

Если вы хотите узнать, для чего предназначено свойство, лучше начать с документации.

...