无法使用Realm中的ignoredProperties进行排序

时间:2014-12-12 06:21:30

标签: swift realm

我尝试使用被忽略的属性对RLMResults进行排序,但我一直收到此错误'Invalid sort column', reason: 'Column named '(null)' not found.'

以下是我的模特

class Store: RLMObject {
    dynamic var key = ""
    dynamic var name = ""
    dynamic var latitude = 0.0
    dynamic var longitude = 0.0
    dynamic var distance = 0.0

    override class func primaryKey() -> String {
        return "key"
    }

    override class func ignoredProperties() -> [AnyObject] {
        return ["distance"]
    }
}

这是我正在运行的功能

func sortByDistance(currentLocation: CLLocation) {
    stores = Store.allObjects()
    let realm = RLMRealm.defaultRealm()

    realm.transactionWithBlock { [unowned self] in
        for obj in self.stores {
            let store = obj as Store
            let storeLocation = CLLocation(latitude: store.latitude, longitude: store.longitude)
            let distance = currentLocation.distanceFromLocation(storeLocation)
            store.distance = distance
        }
    }

    stores = Store.allObjects().sortedResultsUsingProperty("distance", ascending: true)
}

当我尝试println(stores.firstObject().distance)时,我的控制台会打印默认值0.0

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您无法按忽略的属性进行排序。 当您选择忽略属性时,值不会存储在Realm中,因此Realm无法以任何方式使用该属性。因此解决方案是不要忽视它。 从长期来看,特定距离计算将由Realm中的内部查询提供。