简单的Swift数组追加不起作用

13

我知道这会很基础,但是我有这段代码:

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像我预期的那样有两个字符串元素。

我相信这是一个非常简单的问题,但我想我现在有点迷糊了。

3个回答

37

标签从未被初始化。更改。

var labels:[String]?
var labels:[String] = []

3
总是那些微小的事情耗费时间。再次感谢! - Octavio Antonio Cedeño

3
你声明了一个标签变量,但从未允许其存储信息。这意味着它不一定存在,因为它没有被初始化,因此不能使用。
要使用它,必须进行初始化。
var labels:[String] = []

1
请注意您的措辞,因为这并不是技术上正确的。标签变量实际上从未被创建,这就是这个问题首先出现的原因。他已将标签声明为可选变量,这意味着在使用时它可能会被创建或者不会被创建。变量本身直到初始化之前实际上并不存在,此时只是一个声明。 - Sam

-7

没错,这很简单。

已更改

var labels: [String]?

var labels = [String]()

1
如果您对某个回答感到满意,请点击旁边的绿色勾号:这表示您选择的答案解决了您的问题。如果您想添加更多细节,请在问题中添加,而不是在单独的答案中添加。 - GJZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接