Json to Array vs Array to Dictionary

时间:2017-12-28 22:37:52

标签: arrays swift xcode dictionary

更改了与评论相关的内容: 所以我现在在ViewDidLoad上:

 let itemsListJson:String = "jsons/items"

    guard let urlItems = Bundle.main.url(forResource: itemsListJson, withExtension: "json") else { return }

    do{
        let dataItems = try Data(contentsOf: urlItems)
        let jsonItems = try JSONSerialization.jsonObject(with: dataItems, options: .mutableContainers)

        guard let arrayItems = jsonItems as? [Any] else {return}

        dump(jsonItems)

        UserDefaults.standard.set(arrayItems, forKey: "items")
        UserDefaults.standard.synchronize()

    }
    catch{
        print(error)
    }

打印出我的对象

▿38个元素#0   ▿9个键/值对#1     ▿(2个元素)        - 关键:盔甲#2          - 超级:NSString            - 超级:NSObject        - 价值:3#3          - 超级:NSString            - 超级:NSObject     ▿(2个元素)        - key:min_damage#4          - super:NSMutableString            - 超级:NSString              - 超级:NSObject        - 值:0#5          - 超级:NSString            - 超级:NSObject     ▿(2个元素)        - 关键:id#6          - 超级:NSString            - 超级:NSObject        - 值:1#7          - 超级:NSString            - 超级:NSObject     ▿(2个元素)        - 关键:速度#8

当我尝试使用时:

guard let arrayItems = jsonItems as? [String: Any] else {return}

我没有结果。

如何将数据保存为字典。我只是无法解决这个问题,并且有些例子太旧而无法使用。请帮忙

1 个答案:

答案 0 :(得分:0)

以下两行代码显示了您的问题:

guard let array_items = json_items as? [Any] else {return}

let zitems:Dictionary = (UserDefaults.standard.value(forKey: "items") as? [String:Any])!

在第一个中,您将json_items声明为[Any],并将其写入键" items"。在第二个,你读"项目"现在希望它是[String:Any]