-1

我正在用 Swift 创建一个绘图应用程序,它可以在 HTML 的画布上重绘。只是一个原型。我需要的是将这些数据以JSON格式存储到我的数据库中。我将所有内容组织在数组和字典中。

我怎样才能生成这样的东西:

 {
  "data": [

  {

     "width": 150,

     "height": 200,

     "x": 45,

     "y": 65,

     "id": "line4"

  },

  {

     "width": 150,

     "height": 200,

     "x": 45,

     "y": 65,

     "id": "Shape1"

  },

  {

     "width": 150,

     "height": 200,

     "x": 45,

     "y": 65,

     "id": "line3"

  },

  {

     "width": 350,

     "height": 400,

     "x": 45,

     "y": 65,

     "id": "line2"

  }

  ]

  }

使用Arrays and Dicionaries (and / or Structs) 然后变成 Json。

我试图在另一个字典中的数组中创建一个字典。数据是动态的,这是个大问题。

帮助将不胜感激

4

3 回答 3

1
var arr: Array<Any> = []
var dict1: Dictionary<String,Any> = [:]
var dict: Dictionary<String,Any> = [:]

arr = ["text",1,true]
dict1["arr"] = arr
dict["dict1"] = dict1

// 

var dict2: Dictionary<String,Any> = [:]
dict["dict2"] = dict2

print(dict) // ["dict2": [:], "dict1": ["arr": ["text", 1, true]]]

withUnsafeMutablePointer(&dict["dict2"]) { (pdict2) -> Void in
    var pd = UnsafeMutablePointer<Dictionary<String,Any>>(pdict2)
    pd.memory.updateValue(arr, forKey: "arr2")
}

print(dict) // ["dict2": ["arr2": ["text", 1, true]], "dict1": ["arr": ["text", 1, true]]]

你能行的。我不推荐你这种方法。你最好重新设计你的想法

于 2015-11-27T08:48:51.460 回答
0

这里它说明了如何在 Objective-C 中做到这一点。您可以将此解决方案移植到 Swift。

在 iOS 中从 NSDictionary 生成 JSON 字符串

于 2015-11-27T07:50:00.107 回答
0

不确定这是否是您的问题,但要创建静态结构,您所要做的就是用方括号替换花括号。

let data = [ "data": [
    [

        "width": 150,

        "height": 200,

        "x": 45,

        "y": 65,

        "id": "line4"

    ],
    [

        "width": 150,

        "height": 200,

        "x": 45,

        "y": 65,

        "id": "line1"

    ]
]
]

并将其序列化为 JSON 数据:

let jsonData = try! NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.PrettyPrinted)

并反序列化回 Swift 对象:

let data2 = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments)

您可能还想从数据中创建 JSON 字符串:

let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding)

或者从 JSON 字符串中获取数据:

let dataFromString = jsonString?.dataUsingEncoding(NSUTF8StringEncoding)

当然,您可以使用NSJSONSerialization.

于 2015-11-27T08:00:04.437 回答