首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift / iOS:如何为OrderedDictionary变量赋值?

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

Stack Overflow用户
提问于 2016-07-12 11:44:54
回答 1查看 500关注 0票数 0

我想为OrderedDictionary (https://github.com/lukaskubanek/OrderedDictionary)分配值,这样就没问题了。

代码语言:javascript
复制
var orderedDictionary: OrderedDictionary<String, Int> = ["A": 1, "B": 2, "C": 3, "D": 4]

但通过这个它不起作用。

代码语言:javascript
复制
// json data
let abc:[String:AnyObject] = ["A": [1], "B": [2], "C": [3], "D": [4]]
var od: OrderedDictionary<String, AnyObject> = abc

代码语言:javascript
复制
var od: OrderedDictionary<String, AnyObject> = abc as! OrderedDictionary<String, AnyObject>

为什么?有什么不同吗?以及如何为它分配价值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-12 13:09:44

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

首先,数组不是AnyObject,所以必须更改为

代码语言:javascript
复制
var orderedDictionary2: OrderedDictionary<String, Any> = ["A": [1], "B": [2], "C": [3], "D": [4]]

第二个问题是,当您试图直接分配字典时,将调用DictionaryLiteralConvertible (OrderedDictionary具有实现此协议的扩展),但是当您试图通过某个临时变量分配字典时,IMHO赋值操作符应该被重载:

代码语言:javascript
复制
func = <T,U>(inout left: OrderedDictionary<T,U>, right: [T: U])

最后一个问题是Martin R.在初始化普通字典时提到的,此时有关顺序的信息丢失了。

更新

使用临时变量的示例初始化:

代码语言:javascript
复制
let array = [("A", 1), ("B", 2), ("C", 3)]
let orderedArray: OrderedDictionary<String, Int> = OrderedDictionary(elements: array)

代码语言:javascript
复制
let array = [("A", [1]), ("B", [2]), ("C", [3])]
let orderedArray: OrderedDictionary<String, [Int]> = OrderedDictionary(elements: array)

通知

JSON格式:

对象是零或多个名称/值对的无序集合,其中名称是字符串,值是字符串、数字、布尔值、null、对象或数组。

数组是值为零或更多值的有序序列。

术语"object“和"array”来自于JavaScript的约定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38327993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档