从 NSUserDefaults 列表中解包字符串
Unwrapping String from NSUserDefaults list
我对 swift 和展开概念还很陌生。我正在尝试将一个字符串数组存储到 NSUserDefaults 中。将结果打印到控制台后,数组显示为
[Optional("VarOne"), Optional("VarTwo")] //the two test variables stored in the array
目标是实现:
["VarOne", "VarTwo"]
我做了很多测试来得到类似的解决方案。我的代码如下:
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array{
print(i)
}
}
我的主要问题是如何在这种情况下展开变量。澄清一下,这些是字符串变量。
编辑:我在将数组添加到 NSUserDefaults 的地方包含了我的代码
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(listOfPlayers, forKey: "listOfPlayers")
userDefaults.synchronize()
你可以使用!要么 ?运算符。
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array {
if let value = i as? String {
print(value)
}
}
}
尝试以下操作:
if NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") != nil
{
let array = NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") as! [String]
for i in array
{
print(i)
}
}
您可以一次性解包整个数组,但您不能在检查数组是否存在于 NSUserDefaults 中的条件下执行此操作。
首先,arrayForKey 将 return 一个 AnyObject 类型的可选数组,即 [AnyObject]?在您的场景中,此数组包含可选字符串。
if let optionalStringArray = NSUserDefaults.standardUserDefaults().arrayForKey("listOfPlayers") {
// Now you'll be having an array of AnyObject, in your case you have array of optional string
for optionalString in optionalStringArray {
if let str = optionalString as? String {
print(str) // You got your string value here
}
}
HTH:)
试试这个:
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array{
let io = i as! AnyObject
print(io)
}
}
我对 swift 和展开概念还很陌生。我正在尝试将一个字符串数组存储到 NSUserDefaults 中。将结果打印到控制台后,数组显示为
[Optional("VarOne"), Optional("VarTwo")] //the two test variables stored in the array
目标是实现:
["VarOne", "VarTwo"]
我做了很多测试来得到类似的解决方案。我的代码如下:
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array{
print(i)
}
}
我的主要问题是如何在这种情况下展开变量。澄清一下,这些是字符串变量。
编辑:我在将数组添加到 NSUserDefaults 的地方包含了我的代码
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(listOfPlayers, forKey: "listOfPlayers")
userDefaults.synchronize()
你可以使用!要么 ?运算符。
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array {
if let value = i as? String {
print(value)
}
}
}
尝试以下操作:
if NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") != nil
{
let array = NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") as! [String]
for i in array
{
print(i)
}
}
您可以一次性解包整个数组,但您不能在检查数组是否存在于 NSUserDefaults 中的条件下执行此操作。
首先,arrayForKey 将 return 一个 AnyObject 类型的可选数组,即 [AnyObject]?在您的场景中,此数组包含可选字符串。
if let optionalStringArray = NSUserDefaults.standardUserDefaults().arrayForKey("listOfPlayers") {
// Now you'll be having an array of AnyObject, in your case you have array of optional string
for optionalString in optionalStringArray {
if let str = optionalString as? String {
print(str) // You got your string value here
}
}
HTH:)
试试这个:
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("listOfPlayers"){
for i in array{
let io = i as! AnyObject
print(io)
}
}