在iOS9 swift中的字典类型中添加数组作为键和值

Posted

技术标签:

【中文标题】在iOS9 swift中的字典类型中添加数组作为键和值【英文标题】:Adding Arrays as key & value in a dictionary type in iOS9 swift 【发布时间】:2015-12-07 14:03:27 【问题描述】:

我正在创建一个 plist,我想在其中保存某些数据。我有一本需要写在文件中的字典。字典有一个用于值的名称数组和一个用于键的键数组 b。但我不知道我在哪里做错了,但我的代码不起作用。

let namearray = [self.usernametextfield.text,self.passwordtextfield.text]
        let keyarray = ["username","password"]
        let dict = NSMutableDictionary()
        dict.setObject(namearray as! AnyObject, forKey: keyarray) // I am having problem in this line of how to add arrays to dictionary. 
        dict .writeToFile(plistfinalpath, atomically: true)

那么任何人都可以建议如何将数组作为键和值添加到字典中。请更正我的代码。

【问题讨论】:

来自aaisataev:你可以用swift重写它-NSDictionary containing an NSArray 【参考方案1】:

您不能使用数组作为键

我不确定,您到底需要什么,但可能类似于

import Foundation
let namearray = ["name","pswd"]
let keyarray = ["username","password"]
let dict = NSMutableDictionary()
dict.setObject(namearray[0], forKey: keyarray[0])
dict.setObject(namearray[1], forKey: keyarray[1])
// gives you

dump(dict)
/*
▿ 2 key/value pairs
▿ [0]: (2 elements)
▿ .0: username #0
▿ NSMutableString: username
▿ NSString: username
- NSObject: username
- .1: name
▿ [1]: (2 elements)
▿ .0: password #1
▿ NSMutableString: password
▿ NSString: password
- NSObject: password
- .1: pswd
*/

好的,您似乎想将数组添加到字典中...

import Foundation
let namearray = ["name","pswd"]
let dict = NSMutableDictionary()
dict.setObject(namearray, forKey: "user1")
// gives you

dump(dict)
/*
▿ 1 key/value pair
▿ [0]: (2 elements)
▿ .0: user1 #0
▿ NSMutableString: user1
▿ NSString: user1
- NSObject: user1
▿ .1: 2 elements
- [0]: name
- [1]: pswd
*/

【讨论】:

好的,您过去对我的问题有 gvn grt 答案。德克萨斯州。在这里,我希望每当用户输入用户名和密码时,它都会保存在 plist 路径中。在 obj c 中,我将用户名、密码添加到值数组,然后我将其添加到具有相应键数组的字典中。那么在swift中是否有可能。 是的,您可以将数组添加到字典中。见我上面的例子。接下来,您可以将其保存到 plist,就像您之前尝试过的那样。我选择一个密钥“user1”,这取决于你,你的密钥是什么。密钥必须与 NSCopying 兼容,仅此而已 键绝对不能是数组。它必须是一个符合 NSCopying 的值(swift 与 Objective C 相同) 我再次检查了您对我的回答的注释。看来,您希望在字典中保存密钥用户名的用户名值和密钥密码的密码值。在那种情况下,我的第一个例子就是,你想要什么。 如果您有可用的 Objective C 代码,请更新您的问题,我们可以将您的代码“翻译”为 swift

以上是关于在iOS9 swift中的字典类型中添加数组作为键和值的主要内容,如果未能解决你的问题,请参考以下文章

swift实现遍历嵌套字典并修改其中的值

swift实现遍历嵌套字典并修改其中的值

swift实现遍历嵌套字典并修改其中的值

使用日期 Swift 3 对字典数组进行排序

使用 Swift 将具有相同类型的字典分组到具有完整键和值的数组中

Swift:为啥字典中的键类型必须是 Hashable 类型 [重复]