删除字典中的特定副本

时间:2017-09-29 16:03:18

标签: ios swift dictionary

我需要填充字典([String: Any]),但我遇到了问题:

这是我的[Parameters]

的示例
  

[App.WalkedItinerary(时间:3,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:3,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:4,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:5,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:6,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:7,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:8,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:0,纬度:10.93217575,长:10.914),   App.WalkedItinerary(时间:1,纬度:10.93217575,长:10.914)]

我需要以这种方式过滤它: 删除所有相同的长对象但具有最长时间的对象。所以,举个例子:

  

App.WalkedItinerary(时间:8,纬度:10.932175700000002,长:10.914),   App.WalkedItinerary(时间:1,纬度:10.93217575,长:10.914)]

static func fecth(walks:[WalkedItinerary]) -> [Parameters]{
    var dicts:[Parameters] = []
    for walk in walks{
        // {’lat’:10, 'lng’:10, 'time’:1}
        let myDic:Parameters = ["lat" : walk.lat,
                     "lng" : walk.long,
                     "time" : walk.time]
        dicts.append(myDic)

    }

    return dicts
}

1 个答案:

答案 0 :(得分:2)

您应该按时间对数组进行排序,然后将这些数组附加到dicts中,但不在其中。

let walksDescByTime = walks.sorted { $0.time > $1.time }
var dicts: [Parameters] = []
var coordsInDicts = [(lat: Double, long: Double)]()

for walk in walksDescByTime {
    let walkCoord = (lat: walk.lat, long: walk.long)

    if !coordsInDicts.contains(walkCoord) {
            coordsInDicts.append(walkCoord)

            let myDict: Parameters = ["lat": walk.lat,
                                      "lng": walk.long,
                                      "time": walk.time]
            dicts.append(myDict)
    }
}