Извлечь сортировку основных данных ManageObject из последнего элемента - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу получить все элементы из Базовых данных, но отсортирован от самого последнего к старому.У моей сущности "Dice" есть атрибут "timestamp" типа Date.

Вот как я сохраняю и извлекаю:

class func saveResults(_ withResults: Int) -> Bool {
    let context = getContext()
    let entity = NSEntityDescription.entity(forEntityName: "Dice", in: context)
    let manageObject = NSManagedObject(entity: entity!, insertInto: context)

    let date = Date()

    manageObject.setValue(withResults, forKey: "result")
    manageObject.setValue(date, forKey: "timestamp")

    do {
        try context.save()
        return true
    } catch {
        return false
    }
}

class func fetchObject() -> [Dice]? {
    let context = getContext()
    var dices:[Dice]? = nil

    do {
        dices = try context.fetch(Dice.fetchRequest())
        return dices
    } catch {
        return dices
    }
}

Кто-нибудь знает, как его отсортировать.Все решения сбивают с толку и показывают вид от старого к новому.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вам необходимо указать соответствующий дескриптор сортировки.

Рекомендую сделать функцию throw и передать ошибку.

class func fetchObject() throws -> [Dice] {
    let context = getContext()
    let fetchRequest : NSFetchRequest<Dice> = Dice.fetchRequest()
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
    return try context.fetch(fetchRequest)
}

Примечание. Операция fetch возвращает [Dice]. Приведение типов не требуется.

0 голосов
/ 25 апреля 2018

Вы можете сделать это

class func fetchObject() -> [Dice]? {
            var dices:[Dice]? = nil
            let context = getContext()
            let fetchDice: NSFetchRequest<Dice> = Dice.fetchRequest()
            let sortDescriptor = [NSSortDescriptor.init(key: "timestamp", ascending: false)]
            fetchDice.sortDescriptors = sortDescriptor
            do
            {
                dices = try context.fetch(fetchDice) 
                return dices
            }catch(let error) {
                print(error.localizedDescription)
                return dices
            }
   }
...