基于用户距离形式填充tableView在Swift + Parse中的位置

时间:2015-07-27 04:27:21

标签: arrays swift parsing tuples tableview

我想知道如何制作一个基于用户和位置之间距离的tableView。我目前的方法是从Parse加载PFObjects(包括1.场地名称,2。场地图像,3。场地位置),然后使用来自PFObjects的信息来制作基于[(名称)的元组,(图像),(距离)]。通过找到当前用户位置和场地位置的距离来确定距离值。

之后我会按距离对元组进行排序(距离<10将是'接近',距离> 10将是'远')。在排除'near'元组和'far'元组后,我会将这些值附加到它们的特定数组(例如nearNameLabel,nearImageLabel)中,并使用这些数组填充表。

到目前为止,由于并发问题(将内容放在正确的线程中),我一直无法正确地将数据填充到指定的数组中。我想知道是否有更好的方法来解决这个问题?谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

您可以在对象级别设计它,而不是使用单独的数组。就像创建一个类Venue

class Venue: NSObject {

  var name : String?
  var location : CLLocation?
  var image : UIImage?
}

将PFObjects作为场地加载到一个venueArray

然后使用用户位置对其进行排序

func sortArray(venueArray : Array<Venue>, myLocation : CLLocation) -> Array<Venue> {

    var sortedArray = sorted(venueArray) {
        (obj1, obj2) in

        // The downcast to Person is only needed if persons is an NSArray or a Swift Array of AnyObjects
        let v1 = obj1 as Venue
        let v2 = obj2 as Venue

        let distance1 = v1.location?.distanceFromLocation(myLocation)
        let distance2 = v2.location?.distanceFromLocation(myLocation)

        return distance1 < distance2
    }

    return sortedArray
}