没有Optional()无法打印

时间:2016-03-26 19:25:32

标签: ios swift

我在NSUserdefaults中有一个值,每次运行代码时都会打印“Optional(”value“)” 我在搜索中尝试了几种解包技术和许多例子 但似乎没有什么能解决我的问题

代码

let SaveData = NSUserDefaults.standardUserDefaults()
  if(SaveData.valueForKey("newString") != nil){


        print(SaveData.valueForKey("newString") as! String!)
        print(SaveData.valueForKey("newString") as! String)
        print(SaveData.valueForKey("newString")!)

    //    SD.executeChange("INSERT INTO \(ImageIs)Array (\(ImageIs)) VALUES ('\(abc)')")

        SaveData.setValue(nil, forKey: "newString")

    }

1 个答案:

答案 0 :(得分:2)

所以,不是检查某些东西是否为nil,然后当你发现它不是时,你们都强制展开并强制施放它,我们可以使用可选的绑定来安全地拉出这个值以及正确的NSUserDefaults方法:stringForKey(_:)

if let data = NSUserDefaults.standardUserDefaults().stringForKey("newString") {
    print(data)
}

但是,你的第二个&第三次尝试不应该将字符串显示为可选。这个游乐场有效地展示了与NSUserDefaults在这里做的完全相同的事情。

func optionalFunc() -> Any? {
    return "Hello world."
}

print(optionalFunc())
/* unsafe */ print(optionalFunc() as! String!) /* unsafe */ 
/* unsafe */ print(optionalFunc() as! String)  /* unsafe */ 
/* unsafe */ print(optionalFunc()!)            /* unsafe */ 

if let unwrapped = optionalFunc() as? String {
    print(unwrapped)
}

![enter image description here

如您所见,只有第一种情况打印Optional("Hello world.")字符串。