2016-07-25 3 views
1

私はSearchViewControllerを持っており、SearchViewControllerをロードするための "Data"クラスを作成しました。2つの配列から構造体を作成するには?

//File.swift 
    class Data { 

     var add1: String 
     var add2: String 

     init(add1: String, add2: String) { 
      self.add1 = add2 
      self.add1 = add2 
     } 
    } 


//ViewController.swift 
//This is the part that I want to load from two arrays of strings. 
var entries = [Data]() 

entries = [ 
Data(add1: "Canada", add2: "Ottawa"), 
Data(add1: "USA", add2: "Washington"), 
Data(add1: "Japan", add2: "Tokyo"), 
Data(add1: "Denmark", add2: "Copenhagen") 
] 

検索コントローラのデータリスト用のMyクラスが使用されています。私は約1000の値を持っています。したがって、私はこのクラスを以下のように2つの配列からロードします。

let arr1: [String] = ["Canada", "USA", "Japan", "Denmark"] 
let arr2: [String] = ["Ottawa", "Washington", "Tokyo", "Copenhagen"] 

答えて

2

ループ内で値を反復処理しようとあなたはタプル(String, String)の配列に二つの配列を結合するためにここに機能zipを使用し、mapことができentries配列

for i in 0..<arr1.count { 
    // create struct from array data 
    let data = Data(add1: arr1[i], add2: arr2[i]) 

    // insert to your array 
    entries.append(data)   
} 
2

に追加Data

let arr1 = ["Canada", "USA", "Japan", "Denmark"] 
let arr2 = ["Ottawa", "Washington", "Tokyo", "Copenhagen"] 
let data = zip(arr1, arr2).map { Data(add1: $0.0, add2: $0.1) } 
for d in data { print("\(d.add1) - \(d.add2)") } 

プリントの配列へのシーケンス:

Canada - Ottawa 
USA - Washington 
Japan - Tokyo 
Denmark - Copenhagen 

私はまた、あなたがそれをclass

されるようにするには十分な理由を持っていない場合は、代わりに classstructするタイプ Dataを変更することを示唆しています
関連する問題