【问题标题】:How to get the most represented value in Realm?如何获得 Realm 中最具代表性的价值?
【发布时间】:2016-05-04 19:41:43
【问题描述】:

我有一个关于 iOS 上 Realm 的问题。

我的 Realm DB 中有一个对象,如下所示:

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 DB 以返回代表最多的值 A?

谢谢

【问题讨论】:

    标签: swift filter count realm realm-cocoa


    【解决方案1】:

    Realm 没有可以做到这一点的本机查询,但您可以将 Realm 的 KVC 支持与 NSCountedSet 结合起来相当容易地实现这一点:

    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"
    

    【讨论】:

    • 正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多