2016-04-13 5 views
0

私はLATとLNGを含む領域objのフィルターを達成しようとしています。 Filterは、現在の位置とSORTデータソースを使用して、最も近いobjを最小のものに表示します。私はこれをGeoQueriesで解決しようとしました!ポッドが、それはERRを返し続ける:SWIFT Realm.ioフィルター距離で

'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

GeoQueriesは、地理座標コンポーネントのプロパティがデフォルトでlatlngの名前とタイプDoubleまたはFloatであるされていることを期待しています。

エラーメッセージから、あなたのプロパティのタイプがStringであるようです。これらは、数値比較を使用してレルムで照会することはできません。

プロパティに他の名前を使用する場合は、ライブラリによって定義されたメソッドに渡されるオプションの引数で指定する必要があります。

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

は –

+0

:-)私の友人、あなたに感謝し、どのように私は距離によってそれを並べ替えることができますか?私は結果としてタイプのままにします。 –