Skip to main content
 首页 » 操作系统

swift之无法在 Realm 中使用 ignoredProperties 进行排序

2024年01月01日34jillzhang

我一直在尝试使用忽略的属性对 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 中的内部查询提供。