plistでいくつかの繰り返しデータがあります。それを辞書に抽出し、アプリに表示します。唯一の問題は、それをplistに入れたのと同じ順番にする必要があることですが、明らかに辞書はソートできず、ソートされていません。だから私はこれをどのように達成するだろうか?私のplistのデータは、私は、その後のタイプ[Int : ItemType]
の辞書にその変換このplistデータを並べ替える
のように繰り返される
、itemTypeにはこのように、私のデータプロトコルである:
になりclass ExhibitionUnarchiver {
class func exhibitionsFromDictionary(_ dictionary: [String: AnyObject]) throws -> [Int : ItemType] {
var inventory: [Int : ItemType] = [:]
var i = 0;
print(dictionary)
for (key, value) in dictionary {
if let itemDict = value as? [String : String],
let title = itemDict["title"],
let audio = itemDict["audio"],
let image = itemDict["image"],
let description = itemDict["description"]{
let item = ExhibitionItem(title: title, image: image, audio: audio, description: description)
inventory.updateValue(item, forKey: i);
i += 1;
}
}
return inventory
}
}
このような辞書:
[12: App.ExhibitionItem(title: "Water Bonsai", image: "waterbonsai.jpg", audio: "exhibit-audio-1", description: "blah blah blah"), 17: App.ExhibitionItem.....
私はキーのIntの私はそれを並べ替えることができたので、私は期待していたが、今まで私は運がないです。あなたは私がかなり新しいことを迅速に伝えることができるかもしれないので、あなたが関係すると思う情報を提供してください。ありがとう!
私が思うに、あなたが特定の順序が必要な場合は、タイプ
Array
のroot
を作ります順序を維持する唯一の方法は、dictioの代わりに配列を使うことですnary。辞書内の 'Int'キーが重要な場合は、' title 'の隣に兄弟として格納します。 –辞書でコード内の配列に変換するのは簡単ですが、辞書内で順序を維持することは不可能です。 –
私はそれについて考えていますが、それは 'ExhibitionItem'構造体の一部なので、通常の配列のように並べ替えることはできません。 –