将 2 个数组放入一个字典中,同时维护索引

2 arrays into one dictionary while maintaining the indexes

我有两个单独的数组要导入到字典中。顺序非常重要,因为两个数组必须在索引

中匹配
struct MyVariables {
    static var users:NSArray!
    static var img:NSArray!
}

    var data = SearchVC.getData()
    MyVariables.users = data.users;  //array 1  (key)
    MyVariables.img = data.img;      //array 2


// Goal is to insert these arrays into a dictionary while maintaing the matching indexes on both arrays
// Dictonary (MyVariables.img, key: MyVariables.users)

字典没有特定的顺序。但是,如果两个数组的长度相同,则很容易将它们一起迭代:

var dictionary = [NSString: AnyObject]()
for var index = 0; index < data.users.count; index++ {
    let img = data.img as! NSString
    dictionary[img] = data.users[index]
}

或者,按照@robertvojta 的建议,使用zip() 方法:

var dictionary = [NSString: AnyObject]()
for (user, image) in zip(data.users, data.img) {
    let img = image as! NSString
    dictionary[img] = user
}

swift 中字典中的 key 必须是 hashable。即,不是 AnyObject.

假设您可以替换一些未类型化的 Swift 数组,或像这样转换它们:

struct MyVariables {
    var users:Array<AnyObject>
    var img:Array<String>
}

然后您可以使用首选 Swift 方法遍历 1 个数组并使用索引访问第二个数组:

var dictionary = Dictionary<String, AnyObject>()

for (index, element) in enumerate(MyVariables.img) {
    dictionary[element] = MyVariables.users[index]
}

使用for循环遍历数组,根据索引访问键和值各自的数组并将其添加到字典中。它是如此简单,因此您可以使用它来实现您的目标。

希望对您有所帮助!