我想为OrderedDictionary
(https://github.com/lukaskubanek/OrderedDictionary)分配值,这样就可以了。
var orderedDictionary: OrderedDictionary<String, Int> = ["A": 1, "B": 2, "C": 3, "D": 4]
但是,这样做并不起作用。
// json data
let abc:[String:AnyObject] = ["A": [1], "B": [2], "C": [3], "D": [4]]
var od: OrderedDictionary<String, AnyObject> = abc
或者
var od: OrderedDictionary<String, AnyObject> = abc as! OrderedDictionary<String, AnyObject>
为什么呢?那里有什么不同?以及如何为它分配价值?
答案 0 :(得分:0)
我认为还有更多不同的问题。
首先,数组不是AnyObject,因此您必须更改为
var orderedDictionary2: OrderedDictionary<String, Any> = ["A": [1], "B": [2], "C": [3], "D": [4]]
第二个问题是当你试图直接分配字典时,DictionaryLiteralConvertible被调用(OrderedDictionary有扩展来实现这个协议),但当你试图通过一些临时变量分配字典时,恕我直言分配运算符应该超载:
func = <T,U>(inout left: OrderedDictionary<T,U>, right: [T: U])
Martin R.提到了最后一个问题。当初始化常规字典时,此时有关订单的信息将丢失。
<强>更新强>
使用临时变量初始化示例:
let array = [("A", 1), ("B", 2), ("C", 3)]
let orderedArray: OrderedDictionary<String, Int> = OrderedDictionary(elements: array)
或
let array = [("A", [1]), ("B", [2]), ("C", [3])]
let orderedArray: OrderedDictionary<String, [Int]> = OrderedDictionary(elements: array)
<强>注意强>
JSON格式:
对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串,数字,布尔值,null ,对象或数组。
数组是零个或多个值的有序序列。
术语“对象”和“数组”来自JavaScript的惯例。