比嵌套字典更合适的解决方案?

时间:2016-06-18 17:29:44

标签: swift dictionary

我正在努力处理我的应用程序,它处理公交路线。我得到的是,在每一个公共汽车站,从那里出发的公共汽车的每一个未来出发,出发包括方向和出发时间。我希望能够让公交车始终离开一个给定的方向,到目前为止我已经通过创建嵌套字典来完成它,但是,我想知道你是否可以更聪明地做到这一点?这是我到目前为止所得到的

var dict = [String: [String : [String]]]()

所以它会是这样的:

var dict = ["Busname": ["Direction" : ["time1", "time2", "time3"]]]()

有更聪明的方法吗?或者这是要走的路?我想得到给定公共汽车离开指定方向的列表。

1 个答案:

答案 0 :(得分:1)

您可以使用结构而不是字典。

快速举例,让我们制作一个Bus对象:

struct Bus {
    var name: String
    var direction: String
    var times: [NSDate]
}

它包含每条总线的值:总线名称,方向以及公交车时间的日期数组。

当然这只是一个例子,你必须适应你的用例。

你创建你的公共汽车:

let bus1 = Bus(name: "Busey MacBusface", direction: "Somewhere", times:  [...some dates...])
let bus2 = Bus(name: "Gary Bussey", direction: "Nowhere", times:  [...some dates...])

您可以将它们放入集合中:

let todayBusses = [bus1, bus2]

易于过滤:

let allDirections = todayBusses.map { $0.direction }
let allTimes = todayBusses.map { $0.times }
let someBusses = todayBusses.filter { $0.times.contains({ (date) in
    // compare 'date' with other date(s)
}) }
let notNowhere = todayBusses.filter { $0.direction != "Nowhere" }

同样,这只是一个简单的例子,但我认为它可以给你一些想法。

“公交车特定名称的时间”将类似于:

let times = todayBusses.filter { $0.name == "theBusName" }.map { $0.times }