繁体   English   中英

Swift / iOS:如何为OrderedDictionary变量赋值?

[英]Swift / iOS: How to assign value for OrderedDictionary variable?

我想为OrderedDictionaryhttps://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>

为什么? 那里有什么不同? 以及如何为其赋值?

我认为还有更多不同的问题。

首先,数组不是AnyObject,因此您必须更改为

var orderedDictionary2: OrderedDictionary<String, Any> = ["A": [1], "B": [2], "C": [3], "D": [4]]

第二个问题是,当您尝试直接分配字典时,会调用DictionaryLiteralConvertible (OrderedDictionary具有实现此协议的扩展名),但是当您尝试通过某个临时变量分配字典时,应重载IMHO分配运算符:

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的约定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM