在新RLMArray中使用Realms非持久属性

时间:2015-02-09 11:19:11

标签: ios swift realm

我试图将Realm与一个被忽略的属性一起使用。其实很像这篇文章 http://www.raywenderlich.com/81615/introduction-to-realm distance被声明为模型属性但实际上没有持久化并临时用于计算和显示。

然后我有类似的东西

func calculateDistance(stops:RLMResults) -> RLMArray {
    let currentLocation = getCurrentLocation()
    var results:RLMArray = RLMArray(objectClassName: Stop.className())
    for (var i = 0; i < Int(stops.count); i++) {
        var stop = stops[UInt(i)] as Stop
        let stopLocation = CLLocation(latitude: stop.coordinates.latitude, longitude: stop.coordinates.longitude)
        let distance = currentLocation.distanceFromLocation(stopLocation)
        if kDistanceMeters >= distance {
            println("Distance to \(stop.stopName) --> \(distance) m ---- max(\(Int(kDistanceMeters))")
            realm.beginWriteTransaction()
            stop.distance = Double(distance)
            results.addObject(stop)
            realm.commitWriteTransaction()
            println(stop.distance) // Prints out the distance. It's in the object
        }
    }
    println("Getting the results")
    println(results) // Distance property isn't there ...
    return results
}

基本上我想使用这个新的临时results RLMArray来仅在视图中显示我想要的结果,并使用distance属性。 该属性实际上是在对象上分配的,但是一旦在RLMArray中它就会消失。我没有得到任何错误。

我也读过stackoverflow,忽略了Realm的属性不应该像那样使用..那么什么是我的问题的正确解决方案将结果放入一个添加了附加属性的数组?转换为普通对象?

1 个答案:

答案 0 :(得分:0)

现在,您需要创建自己的NSArray对象,按最近距离排序。您现在只能查询持久性属性。