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

4

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

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

And i use the

Dictionary.description

获取字符串。

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

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

我想将它转换回可以像这样评估它
Dictionary["Example 2"]

我该如何开始做这件事呢?
谢谢。

你说的“将字符串转换为字典”是什么意思?如果你有一个字符串“Example”,想要从中得到一个字典,那么你期望得到什么? - Arturo Torres Sánchez
有了新的信息,你应该搜索JSON序列化。然而,我不知道如何在Swift中实现它。 - Arturo Torres Sánchez
是的,JSON序列化是正确的方式。存储字典描述是一个可怕的主意。 - Ian
3个回答

6

description文本的内容在SDK版本之间不是稳定的,所以我不会依赖它。

你最好使用JSON作为中间格式,使用NSJSONSerialization将字典转换为JSON字符串,再进行反向转换。


4
我在字符串帮助类中创建了一个静态函数,您可以随后调用它。
 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
}

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中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接