嗨,我正在制作一个向我展示有趣地方的应用。它显示在半径范围内。我正在使用REALM存储值。 但是,领域不知道如何制作唯一值。我将它用于Unique行。
let result:[String] = realm.objects(E21).sorted("name").uniqueValue("Id_prov", type: String.self)
这是为了找到我周围地区的东西
var datasourceE21Distance:Results<E21> = realm.findInRegion(E21.self, region: curentRegion).filter(tempRequest)
但我不知道如何将这些东西组合成一个,然后将它从关闭一个到我最远的分类。
我很乐意在这里提供任何帮助。
编辑我正在使用这两个扩展程序:
func findInRegion<T: Object>(type: T.Type, region: MKCoordinateRegion, latitudeKey: String = "lat", longitudeKey: String = "lng") -> Results<T> {
// Query
return self
.objects(type)
.filterGeoBox(region.geoBox, latitudeKey: latitudeKey, longitudeKey: longitudeKey)
}
func uniqueValue<U : Equatable>(paramKey: String, type: U.Type)->[U]{
var uniqueValues : [U] = [U]()
for obj in self {
if let val = obj.valueForKeyPath(paramKey) {
if (!uniqueValues.contains(val as! U)) {
uniqueValues.append(val as! U)
}
}
}
return uniqueValues
}
答案 0 :(得分:1)
RealmGeoQueries,您用于通过边界框过滤实体的库,支持通过sortByDistance
按距离排序对象。这将返回一个数组,因为此操作必须在内存中以缓存的距离完成。
您需要确保在uniqueValue
的扩展程序中定义了Array
方法。
答案 1 :(得分:0)
compile 'me.aflak.libraries:ezcam:1.0'