2016-05-17 55 views
0

我需要在桌面視圖中顯示結果witch是唯一的,根據距離我的位置排序....然後使用過濾器。我正在用函數「.filter()」使用這個框架和函數,但它似乎不起作用。SWIFT RealmGeoQueries使用過濾器

private func distanceRealm(){ 
    //get all points closest to me 
    let myLocation = CLLocationCoordinate2DMake(Double(LocationManager.sharedInstance.latitude)!, Double(LocationManager.sharedInstance.longtitude)!) 
    StoredData.sharedInstance.sortedObjectsByDistance = try! Realm().objects(E21.self).filter("Id_prov != ''").filterGeoRadius(myLocation, radius: 50000, sortAscending: true) 

    //leave just unique values 
    var seenIdProv:[String:Bool] = [:] 
    StoredData.sharedInstance.sortedObjectsByDistance = StoredData.sharedInstance.sortedObjectsByDistance.filter { 
     seenIdProv.updateValue(false, forKey: $0.Id_prov) ?? true 
    } 

    print(StoredData.sharedInstance.sortedObjectsByDistance) 
} 

正如你可以看到我有這個概率。

.filter("Id_prov != ''") 

這讓我犯錯:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "Id_prov != ''"' 

所以如何使用過濾器?

回答

0

呃哦....我發現它使用NSPredicate。所以答案是。把你的SQL請求作爲NSPredicate對象。

var predicate = NSPredicate(format: "Id_prov != ''") 


.... .filter(predicate)....