我正在尝试将[Dictionary<String,Any!>]
追加到[Dictionary<String,Any?>]
但我不断收到此错误:
无法将[Dictionary]类型的值转换为[Dictionary]
的预期参数类型
虽然我没有使用swift2
收到此编译错误。
这是我的代码:
class A{
var statistics = [Dictionary<String,Any!>]();
func1(){
let oldStatiscs = self.func2()
//i am getting the error here.
self.statistics.append(oldStatiscs)
}
func2 () -> [Dictionary<String,Any?>]{
}
}
为什么我在swift3上收到此错误?为什么我不用swift2得到这个错误? 如何解决这个问题?
由于
答案 0 :(得分:3)
首先,即使您将两个字典数组都更改为[Dictionary<String,Any>]
,您仍然会收到类似的错误。您正在尝试将数组附加到数组。所以你首先需要改变:
self.statistics.append(oldStatiscs)
为:
self.statistics.append(contentsOf: oldStatiscs)
但即使进行了此更改,您也无法将[Dictionary<String,Any?>]
数组附加到[Dictionary<String,Any!>]
数组中。
最简单的解决方案是将[Dictionary<String,Any!>]
数组更改为[Dictionary<String,Any?>]
数组。
然后您最终得到以下工作代码:
class A {
var statistics = [Dictionary<String,Any?>]();
func f1() {
let oldStatiscs = self.f2()
statistics.append(contentsOf: oldStatiscs)
}
func f2() -> [Dictionary<String,Any?>] {
return [["Hi":"There"]]
}
}
更好的是摆脱Any?
并使用Any
。
class A {
var statistics = [Dictionary<String,Any>]();
func f1() {
let oldStatiscs = self.f2()
statistics.append(contentsOf: oldStatiscs)
}
func f2() -> [Dictionary<String,Any>] {
return [["Hi":"There"]]
}
}
您需要解释为什么您认为自己无法将Any?
更改为Any
。