【问题标题】:Simple swift array append not working简单的快速数组追加不起作用
【发布时间】:2016-06-24 00:48:18
【问题描述】:

我知道这将是超级初级的,但我有这段代码:

var labels: [String]?

func initVC(image: Images){
    self.image = image

    let tempLabels = image.label?.allObjects as! [Labels]
    for i in 0..<tempLabels.count{
        labels?.append(tempLabels[i].label!)
    }

}

labels 在公共范围内,所以函数应该可以访问它,但是当循环运行时,labels 仍然是 nil,没有元素。

当我在调试过程中 po 时,tempLabels 与我预期的一样,包含 2 个字符串元素。

我很确定这是一个非常简单的问题,但我想我现在刚刚解决了。

【问题讨论】:

    标签: arrays swift


    【解决方案1】:

    标签从未被初始化。改变

    var labels:[String]?
    

    var labels:[String] = []
    

    【讨论】:

    • 最费时间的总是最小的事情。再次感谢!
    【解决方案2】:

    您正在声明标签变量,但绝不允许它存储信息。这意味着它不一定存在,因为它没有被初始化,因此不能使用。

    为了让它可用,你必须初始化它

    var labels:[String] = []
    

    【讨论】:

    • 小心你的语言,因为这在技术上是不正确的。标签变量实际上从未创建过,这就是这个问题中的问题首先出现的地方。他已将标签声明为可选变量,这意味着它可能会或可能不会在使用时创建。变量本身在初始化之前实际上并不存在,在此之前它只是一个声明
    【解决方案3】:

    是的,非常简单。

    改变了

    var labels: [String]?
    

    var labels = [String]()
    

    【讨论】:

    • 如果您对回复感到满意,请点击旁边的绿色勾号:这表明您选择的答案解决了您的问题。如果您想添加更多详细信息,请在问题中添加,而不是在单独的答案中添加。
    猜你喜欢
    • 2015-12-08
    • 2016-12-03
    • 2018-07-28
    • 1970-01-01
    • 2016-03-02
    • 2016-05-28
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多