在CoreData中排序(swift)



如何在CoreData中使用排序?我想按属性对它们进行排序,即时间

我还想使用这两个线程。有人知道如何使用这两个:

fetchOffset<==============

fetchLimit<==============

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}

您所需要做的就是设置获取请求的排序描述符。

// 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允许您跳过指定数量的行。

如果您想知道属性的用途,文档是一个很好的起点。

最新更新