2017-09-18 5 views
1

Swift 3Swift:読み込みplist - キーでフィルタリングし、値を追加して追加する方法

私はplistファイルを読んでコレクションビューを更新しようとしています。

私のmenu.plistには、コレクションビューを更新するために.countを使用する配列に追加して追加する項目が6つあります。

問題点辞書のソートに問題があります。私は配列に値の文字列を追加したいが、テキスト "Item 0"、 "Item 1"などを持つキーで転送を並べ替える。配列が整理されていないので、didSelectItemAtのswitch文を使うのが難しくなる。 viewDidLoad

で私は keyのみ追加 value mainGroupに配列を使用していないコードが、その組織化されていないと私はplistのことで、それをフィルタリングする必要が key

コードで

var mainGroup = [String]() 

var myDict: NSDictionary? 
if let path = Bundle.main.path(forResource: "menu", ofType: "plist") { 
    myDict = NSDictionary(contentsOfFile: path) 
} 
if let dict = myDict { 

    print(dict) 

    for (_, value) in dict { 

     mainGroup.append("\(value)") 
    } 

    print(mainGroup) 
} 

PLIST

pic 1

+0

あなたのplistはなぜ辞書ですか?それは配列でなければならないようです。 – rmaddy

+0

plistが新しいですが、どのような違いがありますか?あなたは配列 – BroSimple

+2

を並べ替えることができますそれは本当にplistの問題ではありません。必要に応じて適切なデータ収集を使用する必要があります。辞書と配列の違いを理解できない場合は、DictionaryクラスとArrayクラスのドキュメントの概要を読んだり、[Collection Types](https://developer.apple.com)を見直すことを強くお勧めします/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105)セクションを参照してください。 – rmaddy

答えて

1

012をソートする必要がありますアレイ及びそれらの並べ替えキーで値へのアクセス

フルコード@rmaddyが

enter image description here

var mainGroup = [String]() 

    var myArray: [String]? 
    if let path = Bundle.main.path(forResource: "menu", ofType: "plist") { 
     myArray = NSArray(contentsOfFile: path) as? [String] 
    } 

    print(myArray) 
を言うように、アレイを使用し

var mainGroup = [String]() 

    var myDict: [String:String]? 
    if let path = Bundle.main.path(forResource: "menu", ofType: "plist") { 
     myDict = NSDictionary(contentsOfFile: path) as? [String:String] 
    } 
    if let dict = myDict { 

     print(dict) 

     for key in dict.keys.sorted() { 

      mainGroup.append(dict[key]!) 
     } 



     print(mainGroup) 
    } 

更新

+0

この場合、辞書を使用する必要はありません。 plistはそれらの値の配列でなければなりません。 – rmaddy

+0

あなたは正しいかもしれませんが、それはOPが必要とするもので、@rmaddyを行うのはとても簡単です –

+0

@ReinierMelianそれは完璧に動作しますが、辞書から配列に変換する必要がありますか? – BroSimple

関連する問題