我需要填充字典([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
}
答案 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)
}
}