迅速给出错误的字典初始化数组

Fibnochi

我正迅速地遇到怪异的行为。我有

let valueOne: [String: String] = [
    "title": "May 29th",
    "value": "260"
]

let valueTwo = [
    "title": "April 24th",
    "value": "260"
]

var historyData = [valueOne, valueTwo]

但这给了我一个编译器错误

xxxController.type没有名为'valueOne'的成员

当我尝试

let valueOne: [String: String] = [
    "title": "May 29th",
    "value": "260"
]

let valueTwo = [
    "title": "April 24th",
    "value": "260"
]

var historyData = [
    [
        "title": "May 29th",
        "value": "260"
    ],
    [
        "title": "April 24th",
        "value": "260"
    ]
]

它工作正常,没有错误。另外,当我在Playground中尝试这两个代码时,它们都可以正常工作。

我的问题是我在第一段中做错了什么?

林太郎

假设您的行为如下:

class xxxController: UIViewController {

    let valueOne: [String: String] = [
        "title": "May 29th",
        "value": "260"
    ]

    let valueTwo = [
        "title": "April 24th",
        "value": "260"
    ]

    var historyData = [valueOne, valueTwo]

    // ....
}

您无法执行此操作,因为我们无法声明中引用实例属性class

相反,在这种情况下,应将它们设置为static属性:

class xxxController: UIViewController {

    static let valueOne: [String: String] = [
        "title": "May 29th",
        "value": "260"
    ]

    static let valueTwo = [
        "title": "April 24th",
        "value": "260"
    ]

    var historyData = [valueOne, valueTwo]

    // ....
}

historyData在初始化中初始化:

class xxxController: UIViewController {

    let valueOne: [String: String] = [
        "title": "May 29th",
        "value": "260"
    ]

    let valueTwo = [
        "title": "April 24th",
        "value": "260"
    ]

    var historyData:[[String: String]]

    required init(coder aDecoder: NSCoder) {
        historyData = [valueOne, valueTwo]
        super.init(coder: aDecoder)
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        historyData = [valueOne, valueTwo]
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    // ....
}

historyData[[String: String]]!并在中分配给它viewDidLoad()

class xxxController: UIViewController {

    let valueOne: [String: String] = [
        "title": "May 29th",
        "value": "260"
    ]

    let valueTwo = [
        "title": "April 24th",
        "value": "260"
    ]

    var historyData:[[String: String]]!

    override func viewDidLoad() {
        super.viewDidLoad()
        historyData = [valueOne, valueTwo]
    }

    // ....
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在构造函数中初始化静态变量时,为什么Java不给出错误?

“ pod初始化”给出错误“ -bash:pod:命令未找到”

在Swift中初始化字典的空数组

CGImageCreate迅速给出错误

使用Swift 3从数组初始化字典

通过转换数组初始化字典

C ++在结构初始化期间使用内部数组给出了奇怪的错误

Swift NSCountedSet初始化与数组错误?

使用is运算符的变量初始化在使用相同的变量名称时给出错误

为什么在循环中初始化数组时Rust编译器为什么会给出未初始化的变量错误?

映射的std :: for_each()给出无效的初始化错误

“通道”类型的字段给出错误“无法默认初始化具有通用类型的变量”

clang无法检测到初始化并给出错误

Autodesk GuiViewer3D初始化给出错误

模板中对象的输入在Angular 10中给出错误“初始化之前已使用属性”

初始化char *没有给出错误

Java中的数组初始化错误

Lejos在初始化矩阵时给出了错误

如何用数组值初始化字典?

Gradle 3.1给出错误:任何命令“生成失败,出现异常,无法初始化类”

c#中字典的初始化返回溢出错误

自定义类型的 Swift 字典初始化给出:“>”不是后缀一元运算符错误

无法安装 pihole 给出错误无法初始化前端:对话框

valgrind 给出了错误的未初始化大小

初始化数组的索引越界错误

数组初始化错误

如何初始化可变数量的数组/字典?

C++:switch case 中的初始化并不总是给出错误

用空数组初始化 javascript 字典