2017-02-16 23 views
0

ループのインデックスを使用して作成した変数をソートするケースループがあります。しかし、私はエレガントな方法があるかどうかは分かりません。ここに私がこれまで持っていたループがあります。ここで大文字小文字のパターンマッチングループのためにインデックスを取得する方法

typealias JSONDictionary = [String: AnyObject] 

for case let playlistData as JSONDictionary in JSON { 
     let playlist = Playlist(context: coreData.viewContext) 
     playlist.initialize(dictionary: playlistData, key: youtube.GMSKey) 

私は避けたいものです。

 typealias JSONDictionary = [String: AnyObject] 

     var i = 0 
     for case let playlistData as JSONDictionary in JSON { 
      let playlist = Playlist(context: coreData.viewContext) 
      playlist.initialize(dictionary: playlistData, key: youtube.GMSKey) 
      // etc 
      i += 1 

答えて

3

あなたはfor case letと一緒にenumerated()を使用することができ、あなただけの条件付きの型キャストのパターンを移動する必要がありますタプル内の第2の要素の結合に変換する。

// note that variable names should be lowerCamelCase – I renamed 'JSON' to 'json'. 
for case let (index, playlistData as JSONDictionary) in json.enumerated() { 
    // ... 
} 

enumerated()あなたがそれを呼び出すシーケンスの要素と一緒に(indexとしてループ内入手可能)0から始まる連続Int Sの対の配列を返します。

1
for case (index, element as JSONDictionary) in JSON.enumerated() { 
    print("Item \(index): \(element)") 
} 

または

for (index, element) in JSON.enumerated() { 
    if element as JSONDictionary { 
    // 
    } 
} 
関連する問題