Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从两个数组创建结构?_Swift_Data Structures - Fatal编程技术网

Swift 如何从两个数组创建结构?

Swift 如何从两个数组创建结构?,swift,data-structures,Swift,Data Structures,我有SearchViewController,我创建了“Data”类来加载SearchViewController //File.swift class Data { var add1: String var add2: String init(add1: String, add2: String) { self.add1 = add2 self.add1 = add2 }

我有
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"]

尝试迭代循环中的值,并将其附加到
条目
数组中

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)           
}

对于0中的i..尝试迭代循环中的值,并将其附加到
条目
数组中

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)           
}

对于0中的i..您可以在此处使用函数
zip
将两个数组组合成一个元组数组
(字符串,字符串)
,然后
将该序列映射成一个
数据数组

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

我还建议您将类型
数据
更改为
结构
,而不是
,如果您没有充分的理由将其更改为

,您可以在此处使用函数
zip
将两个数组组合成元组数组
(字符串,字符串)
然后
将该序列映射到
数据数组中

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
我还建议您将类型
数据
更改为
结构
,而不是
,如果您没有充分的理由将其更改为

,这种解决方案(循环)将在大阵列的情况下使iPhone的CPU过载。具有“zip”功能的更好解决方案。这种解决方案(循环)将在大阵列的情况下过载iPhone的CPU。具有“zip”功能的更好解决方案。