從你的錯誤Expected declaration
,我屁股UME你正在做的一樣:
struct Foo {
var dictionaryA = [
"a": "1",
"b": "2",
"c": "3",
]
var dictionaryB = [
"a": "4",
"b": "5",
"c": "6",
]
var myArray = [[ : ]]
myArray.append(dictionaryA) // < [!] Expected declaration
myArray.append(dictionaryB)
}
這是因爲you can place only "declarations" in the struct body,而myArray.append(dictionaryA)
是不是一個聲明。
你應該在其他地方做這件事,例如在初始化器中。下面的代碼編譯。
struct Foo {
var dictionaryA = [
"a": "1",
"b": "2",
"c": "3",
]
var dictionaryB = [
"a": "4",
"b": "5",
"c": "6",
]
var myArray = [[ : ]]
init() {
myArray.append(dictionaryA)
myArray.append(dictionaryB)
}
}
但作爲@AirspeedVelocity提到的,你應該提供有關myArray
,或myArray
更多信息將Array<NSDictionary>
,我覺得你不期待。
也許或也許不是,你想要什麼是一樣的東西:
總之,正確的解決方案將取決於你真正要做的改變
struct Foo {
static var dictionaryA = [
"a": "1",
"b": "2",
"c": "3",
]
static var dictionaryB = [
"a": "4",
"b": "5",
"c": "6",
]
var myArray = [dictionaryA, dictionaryB]
}
但是,我不知道,你爲什麼不只是:
struct Foo {
var myArray = [
[
"a": "1",
"b": "2",
"c": "3",
],
[
"a": "4",
"b": "5",
"c": "6",
]
]
}
其中,是 「結構」 的代碼?你發佈的代碼片段看起來沒問題,編譯得很好。 – Bill 2015-02-09 12:56:34