gpt4 book ai didi

ios - swift/iOS : How to assign value for OrderedDictionary variable?

转载 作者:行者123 更新时间:2023-11-30 13:14:57 30 4
gpt4 key购买 nike

我想给 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>
为什么?那里有什么不同?以及如何为其赋值?

最佳答案

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

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

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

第二个问题是当您尝试直接分配字典时,DictionaryLiteralConvertible被调用(OrderedDictionary 有扩展来实现此协议(protocol)),但是当您尝试通过某个临时变量分配字典时,恕我直言,分配运算符应该被重载:

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 格式:

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

数组是由零个或多个值组成的有序序列。

术语“对象”和“数组”来自 JavaScript 的约定。

关于ios - swift/iOS : How to assign value for OrderedDictionary variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327993/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com