如何摆脱第一个值的“()”,以便分配给下一个变量?
这是我初始化词典的方式:
var imagedata: [String: [String: Any]] = [:]
我将数据加载到字典中,然后对其进行排序
imagedata = Array(imagedata).sort({ $0.0 < $1.0 })
但是它给了我一个'[(String,[String:Any])]'类型的值,而不是'[String:[String:Any]]',所以不能分配它。
答案 0 :(得分:1)
#include<stdio.h>
main()
{
int arr[]={2, 3, 4, 1, 6};
printf("%u, %u, %u\n", arr, &arr[0], &arr);
return 0;
}
// imagedata是一本字典。
var imagedata: [String: [String: Any]] = [:]
这里您已将imagedata添加到Array并进行了排序。因为我们无法对字典进行排序。
imagedata = Array(imagedata).sort({ $0.0 < $1.0 })
的结果将是具有原始数组对象类型的数组。所以它返回sort({ $0.0 < $1.0 })
。所以我们无法分配到imagedata变量。
实际上[(String, [String : Any])]
什么也没做。因为数组只有一个对象。所以它返回同样的东西。
答案 1 :(得分:0)
您可以对其进行排序,但是您无法将结果存储回imagedata
,因为Array(imagedata).sort({ $0.0 < $1.0 })
会创建(已排序的)array
,而imagedata
则dictionary
的类型。
这会给你一个编译错误:imagedata = Array(imagedata).sort({ $0.0 < $1.0 })
虽然这不会Array(imagedata).sort({ $0.0 < $1.0 })
这告诉我们,问题不是sort方法,而是我们用来存储结果的变量。
词典有自己的sort
方法,您可以使用。但是尝试分配array
(从任何sort
方法返回的值)到dictionary
(imagedata
)将始终失败。
修改强>
以下是您如何在字典中使用sort
方法并使用返回值的示例:
var imagedata: [String: [String: Any]] = [:]
imagedata["a"] = ["Hello": 2]
imagedata["b"] = ["World": UIImage()]
imagedata["c"] = ["Foo": "Bar"]
imagedata["d"] = ["LifeQuest": 42]
print(imagedata)
// prints the content of the dictionary. Dictionaries are un-ordered, so you may always get different results here
// ["b": ["World": <UIImage: 0x60000009ea00>, {0, 0}], "a": ["Hello": 2], "d": ["LifeQuest": 42], "c": ["Foo": "Bar"]]
let orderedKeysAndValues = imagedata.sort({ $0.0 < $1.0 })
for (key, value) in orderedKeysAndValues {
print("key: \(key)")
print("value: \(value)")
}
// the content of the loop will print
// key: a
// value: ["Hello": 2]
// key: b
// value: ["World": <UIImage: 0x60000009ba80>, {0, 0}]
// key: c
// value: ["Foo": "Bar"]
// key: d
// value: ["LifeQuest": 42]