2016-07-25 7 views
1

Ich habe SearchViewController und ich erstellte "Data" -Klasse, um SearchViewController zu laden.Wie erstelle ich eine Struktur aus zwei Arrays?

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

Meine Klasse für Such-Controller Datenliste geht weiter. Ich werde ungefähr 1000 Werte haben. Daher möchte ich diese Klasse aus zwei Arrays laden, wie unten gezeigt.

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

Antwort

2

versuchen, den Wert in einer Schleife zu durchlaufen und hängt den entries Array

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

Sie die Funktion zip hier können die beiden Arrays in ein Array von einer (String, String) Tupeln zu kombinieren und dann map, dass -Sequenz in ein Array von 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)") } 

Drucke:

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

Ich schlage vor, dass Sie der Typ Data ändern, um eine struct anstelle eines class zu sein, wenn Sie nicht einen guten Grund, denn es ist ein class

zu sein