使用可选

时间:2015-06-15 13:33:50

标签: ios swift optional

我正在声明一个数组:

var array:[String] = []

分配值:

array.append(uniqueId as String)

然后将其传递给函数:

static var levels_array : [String] = []
class func setLevelsArray(arr:[String])
{
    GamePrefrences.levels_array = arr
    println(GamePrefrences.levels_array)
}

我的问题是,当我打印数组时,我得到:

  

[可选(88868658),可选(112051080),可选(95274974)]

为什么这是可选的?我只想要数组中的字符串,为什么要添加“可选”?

我来自Java,有人可以解释为什么创建了可选项以及如何删除它

2 个答案:

答案 0 :(得分:3)

实际字符串很可能是"可选(88868658)"等等。您可能偶然地从可选字符串中创建了这些字符串。在上面的代码中,你肯定有一个字符串数组,而不是一个选项数组,当你打印一个字符串数组时,他们不会包含双引号(这可能会令人困惑)。

这可能发生在这里:

array.append(uniqueId as String)

uniqueId是什么类型的? as不用于转换类型。如果可能的话,它只是用来投射它们(虽然如果情况确实会失败;所以我怀疑你在某处进行字符串插值)。

答案 1 :(得分:0)

String本身不是可选的 - uniqueId是。基本上,期权意味着存储的价值可能存在,也可能不存在。

我建议使用if let语句解包您的可选uniqueID,然后再将其转换为String,以便程序实际上知道可选项存在,然后再将其存储为一个String,例如:

if let uniqueId = uniqueId {
   array.append(uniqueId as String)
}