Как получить наиболее представленное значение в сфере?

У меня есть вопрос относительно Realm на iOS.

У меня есть объект в моей базе данных Realm, который выглядит следующим образом:

class MyObject: Object {
    dynamic var id: Int!
    dynamic var val: String!
}

Допустим, я заполнил свою таблицу этими данными:

| id | val |
|----|-----|
| 1  | A   |
| 2  | B   |
| 3  | A   |
| 4  | B   |
| 5  | A   |
| 6  | A   |

Как можно запросить мою базу данных Realm, чтобы вернуть наиболее представленное значение, которое является A?

Спасибо

1 ответ

Решение

У Realm нет собственного запроса, который бы выполнял именно это, но вы можете объединить поддержку Realm KVC с NSCountingSet, чтобы получить это довольно легко:

import Foundation
import RealmSwift

class MyObject: Object {
    dynamic var id: Int = 0
    dynamic var val: String = ""
}

let realm = try! Realm()
try! realm.write {
    for (index, value) in ["A", "B", "A", "B", "A", "A"].enumerate() {
        realm.create(MyObject.self, value: [index, value])
    }
}

let values = realm.objects(MyObject).valueForKey("val") as! [AnyObject]
let countedSetOfValues = NSCountedSet(array: values)
let maxElement = countedSetOfValues.allObjects.maxElement { first, second in
    return countedSetOfValues.countForObject(first) < countedSetOfValues.countForObject(second)
}
maxElement // => "A"
Другие вопросы по тегам