从NSUserDefaults列表中解包字符串

时间:2016-06-09 11:37:33

标签: arrays swift nsuserdefaults

我对迅速和展开的概念非常陌生。我试图将一个字符串数组存储到NSUserDefaults中。将结果打印到控制台后,阵列显示为

BaseViewController

目标是实现:

[Optional("VarOne"), Optional("VarTwo")] //the two test variables stored in the array

我做了很多测试来获得类似的解决方案。我的代码如下:

["VarOne", "VarTwo"]

我的主要问题是如何在这种情况下解包变量。为了澄清,这些是String变量。

编辑:我将代码添加到NSUserDefaults

    let defaults = NSUserDefaults.standardUserDefaults()

    if let array = defaults.arrayForKey("listOfPlayers"){

        for i in array{
        print(i)
        }

    }

4 个答案:

答案 0 :(得分:1)

试试这个:

really

答案 1 :(得分:0)

你可以用!要么 ?运算符。

let defaults = NSUserDefaults.standardUserDefaults()

    if let array = defaults.arrayForKey("listOfPlayers"){

        for i in array {
          if let value = i as? String {
             print(value)
          }
        }
    }

答案 2 :(得分:0)

尝试以下方法:

if NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") != nil
{
    let array = NSUserDefaults.standardUserDefaults().objectForKey("listOfPlayers") as! [String]

    for i in array
    {
       print(i)
    }
}

你可以一次性打开整个数组,但你不能在条件中检查NSUserDefaults中是否存在该数组。

答案 3 :(得分:0)

首先,arrayForKey将返回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:)