我一直在尝试使用忽略的属性对 RLMResults 进行排序,但我一直收到此错误 'Invalid sort column',原因:'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 打印在我的控制台中。
任何帮助将不胜感激。
请您参考如下方法:
您不能按忽略的属性排序。 当您选择忽略某个属性时,这些值不会存储在 Realm 中,因此 Realm 不可能以任何方式使用该属性。所以解决办法是不要忽视它。 从长远来看,特定的距离计算将由 Realm 中的内部查询提供。
