使用可选创建的数组
array created with 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)
}
我的问题是,当我打印数组时,我得到:
[Optional(88868658), Optional(112051080), Optional(95274974)]
为什么这是可选的?我只想要数组中的字符串,为什么要添加 "optional"?
我来自Java 有人可以解释为什么创建可选的以及如何删除它
很可能实际的字符串是 "Optional(88868658)",等等。您可能不小心从一个可选字符串创建了这个字符串。在上面的代码中,你肯定有一个字符串数组,而不是一个可选数组,当你打印一个字符串数组时,它们不包括双引号(这可能会造成混淆)。
可能发生在这里:
array.append(uniqueId as String)
uniqueId
是什么类型? as
不用于类型转换。它只是在可能的情况下用于转换它们(尽管如果是这种情况,这真的应该失败;所以我怀疑你在某处进行字符串插值)。
String
本身不是可选的——uniqueId
是。基本上,可选项意味着存储的值可能存在也可能不存在。
我建议在将可选的 uniqueID
转换为 String
之前使用 if let
语句解包,这样程序实际上在将其存储为之前就知道可选的存在一个 String
,例如:
if let uniqueId = uniqueId {
array.append(uniqueId as String)
}
我正在声明一个数组:
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)
}
我的问题是,当我打印数组时,我得到:
[Optional(88868658), Optional(112051080), Optional(95274974)]
为什么这是可选的?我只想要数组中的字符串,为什么要添加 "optional"?
我来自Java 有人可以解释为什么创建可选的以及如何删除它
很可能实际的字符串是 "Optional(88868658)",等等。您可能不小心从一个可选字符串创建了这个字符串。在上面的代码中,你肯定有一个字符串数组,而不是一个可选数组,当你打印一个字符串数组时,它们不包括双引号(这可能会造成混淆)。
可能发生在这里:
array.append(uniqueId as String)
uniqueId
是什么类型? as
不用于类型转换。它只是在可能的情况下用于转换它们(尽管如果是这种情况,这真的应该失败;所以我怀疑你在某处进行字符串插值)。
String
本身不是可选的——uniqueId
是。基本上,可选项意味着存储的值可能存在也可能不存在。
我建议在将可选的 uniqueID
转换为 String
之前使用 if let
语句解包,这样程序实际上在将其存储为之前就知道可选的存在一个 String
,例如:
if let uniqueId = uniqueId {
array.append(uniqueId as String)
}