SWIFT Realm.io按距离过滤

时间:2016-04-13 16:14:36

标签: swift realm

我正在尝试在包含LAT和LNG的realm obj上实现过滤。过滤器将获取当前位置和SORT数据源以将最接近的obj呈现给最少的obj。我试图用GeoQueries解决这个问题! pod,但它不断返回错误:

'Expected object of type string for property 'lat' on object of type 'E21', but received: 53.48708'

我的代码:

var datasourceE21Distance:Results<E21>!

func loadDistanceDb() {
    do{
        let tempLat = Double(LocationManager.sharedInstance.latitude)
        let tampLng = Double(LocationManager.sharedInstance.longtitude)


        let realm = try Realm()
        datasourceE21Distance = realm.findInRegion(E21.self, region: mapView.region)

        print(datasourceE21Distance)

    } catch let error as NSError {
        print(error)
    }
}

1 个答案:

答案 0 :(得分:1)

GeoQueries预计地理坐标组件的属性默认名为latlng,类型为DoubleFloat

从错误消息中看来,您的属性似乎属于String类型。 Realm使用数字比较无法查询这些内容。

如果为属性使用其他名称,则必须通过传递给库定义的方法的可选参数指定这些名称。

realm.findInRegion(E21.self, region: mapView.region
       latitudeKey:  "latitude",
       longitudeKey: "longitude"
     )