Swift:如何将字符串转换为字典

时间:2015-03-23 22:24:22

标签: swift dictionary

我有一个字典,我将其转换为字符串以将其存储在数据库中。

        var Dictionary =
    [
        "Example 1" :   "1",
        "Example 2" :   "2",
        "Example 3" :   "3"
    ]

我使用

Dictionary.description

获取字符串。

我可以完美地将它存储在数据库中,但是当我读回它时,显然它是一个字符串。

"[Example 2: 2, Example 3: 3, Example 1: 1]"    

我想将它转换回来,我可以像

一样评估它
Dictionary["Example 2"]

我该怎么做?

由于

3 个答案:

答案 0 :(得分:6)

不能保证description文本在SDK版本中保持稳定,因此我不会依赖它。

您最好的选择是使用JSON作为NSJSONSerialization的中间格式。从字典转换为JSON字符串并返回。

答案 1 :(得分:2)

我在字符串助手类中创建了一个静态函数,然后可以调用它。

 static func convertStringToDictionary(json: String) -> [String: AnyObject]? {
    if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
        var error: NSError?
        let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: &error) as? [String: AnyObject]
        if let error = error {
            println(error)
        }
        return json
    }
    return nil
}

然后你就可以这样称呼它

if let dict = StringHelper.convertStringToDictionary(string) {
   //do something with dict
}

答案 2 :(得分:0)

这正是我现在正在做的事情。考虑到@gregheo说“description.text不能保证在整个SKD版本中保持稳定”,description.text可能会在格式编写方面发生变化,所以依靠它是不明智的。

我相信这是做它的标准

    let data = your dictionary

    let thisJSON = try  NSJSONSerialization.dataWithJSONObject(data, options: .PrettyPrinted)

    let datastring:String = String(data: thisJSON, encoding: NSUTF8StringEncoding)!

您可以将数据字符串保存到coredata。