辞書の代わりに構造体を使用できます。
クイックたとえば、のは、バスオブジェクトを作成してみましょう:
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" }
等アゲイン
、これをちょうど速いexです十分ですが、私はそれがあなたにアイデアを与えることができると思います。あなたはバスの特定の名前のための時間になるだろうどのように
let times = todayBusses.filter { $0.name == "theBusName" }.map { $0.times }
:
「バスの特定の名前のための時間は、」のようなものでしょうか?私はバスを探して、配列内のアイテムをプリントアウトする必要がありますか? – Recusiwe
例を使って自分の答えを更新しました。私の例ではマップとフィルタを使用していますが、これに慣れていない場合は、もちろん通常どおりループを使用することもできます。 – Moritz
現時点では、ストップを持つクラスとデパルタを持つクラスを持っています。このクラスは配列内のストップクラスに含まれています。だから、別のクラス/構造体を作成して、すべての出発点をループして、正しいバスオブジェクトに追加されるようにしてください。物事は、同じバスがJSONで何度も繰り返されることです。なぜなら、それは1日に数回の出発があるからです。だから私はバスのリストをループして、そこにあるかどうかをチェックしなければならないと思います。もしそうでなければ、オブジェクトを作成して追加します。現在のオブジェクトのリスト? – Recusiwe