2016-07-25 61 views
1

我有SearchViewController,我創建了「Data」類來加載SearchViewController。如何從兩個數組創建一個結構?

//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") 
] 

我的課程搜索控制器的數據列表繼續。我會有大約1000個值。因此,我想從兩個數組中加載這個類,如下所示。

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

回答

2

嘗試迭代值循環,並追加到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

您可以使用該功能zip這裏兩個陣列組合成一個元組(String, String)的數組,然後map那序列插入的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 

我也建議你改變類型Data是一個struct代替class,如果你沒有一個很好的理由,這是一個class

相關問題