2017-01-28 18 views
0

forループで複数の配列を反復処理する方法を教えてください。私はzipメソッドを認識していますが、もし私が9の配列を持っていたら?複数の配列を繰り返す

var usernames  = [String]() 
var avatars   = [PFFile]() 
var postDescriptions = [String]() 
var locations  = [String]() 
var latitudes  = [String]() 
var longitudes  = [String]() 
var postFiles  = [PFFile]() 
var dates   = [Date]() 
var uniqueIDs  = [String]() 

ご覧のとおり、複数の形式があります。

+6

。 – kennytm

+2

あなたは9個の配列を持っていてはいけません**、あなたはそのクラスのインスタンスの 'User'クラスと** one **配列を持つべきです。 – luk2302

答えて

3

zip自体それシーケンス、原則的にはあなたが書くことができるように:

for (username, (avatar, (postDescription, (location, (latitude, (longitude, (postFile, (date, uniqueID)))))))) 
    in zip(usernames, zip(avatars, zip(postDescriptions, zip(locations, zip(latitudes, zip(longitudes, zip(postFiles, zip(dates, uniqueIDs)))))))) { 
     // use `username`, `avatar` etc. 
} 

を(他のオプションについてはHow can I run through three separate arrays in the same for loop?を参照してください)

残念ながら、この混乱で見て!

struct User { var username: String var avatar: PFFile var postDescription: String var location: String var latitude: String var longitude: String var postFile: PFFile var date: Date var uniqueID: String } 

と1つのだけのアレイ上で動作する:あなたは本当にただ、すべての9つの属性が含まれている構造を定義する必要がありますが、9つの並列アレイを持っている場合は、構造体を使用するようにコードをリファクタリングする必要がありO_O

var users = [User]() 

for user in users { 
    // use `user.username`, `user.avatar` etc. 
}