Store [String] in NSUserDefaults(Swift)

前端之家收集整理的这篇文章主要介绍了Store [String] in NSUserDefaults(Swift)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想把一个Swift样式字符串数组保存到NSUserDefaults,但是在代码中的“if”语句表示returnValue总是nil。

后来在代码中我想使用“food = [”spaghetti“]来添加新条目。

  1. var food : [String] {
  2. get {
  3. var returnValue : [String]? = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String]
  4. if returnValue == nil //Check for first run of app
  5. {
  6. returnValue = ["muesli","banana"]; //Default value
  7. }
  8. return returnValue!
  9. }
  10. set (newValue) {
  11. NSUserDefaults.standardUserDefaults().setObject(newValue,forKey: "food")
  12. NSUserDefaults.standardUserDefaults().synchronize()
  13. }
  14. }
以下代码可以帮助您解决问题:
  1. import UIKit
  2.  
  3. class ViewController: UIViewController {
  4.  
  5. var food: [String] {
  6. get {
  7. if let returnValue = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String] {
  8. return returnValue
  9. } else {
  10. return ["muesli","banana"] //Default value
  11. }
  12. }
  13. set {
  14. NSUserDefaults.standardUserDefaults().setObject(newValue,forKey: "food")
  15. NSUserDefaults.standardUserDefaults().synchronize()
  16. }
  17. }
  18.  
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21.  
  22. print(food) // prints: ["muesli","banana"] (at first launch)
  23.  
  24. food = ["cake"]
  25. print(food) // prints: ["cake"]
  26.  
  27. food += ["spaghetti"]
  28. print(food) // prints: ["cake","spaghetti"]
  29.  
  30. food = []
  31. print(food) // prints: []
  32.  
  33. NSUserDefaults.standardUserDefaults().setObject(nil,forKey: "food")
  34. print(food) // prints: ["muesli","banana"]
  35. }
  36.  
  37. }

然而,使用上面的代码,如果你设置food = [],你会有一个问题,因为食物不会返回[“muesli”,“banana”]。为了避免这种情况,你可能更喜欢下面的代码

  1. import UIKit
  2.  
  3. class ViewController: UIViewController {
  4.  
  5. var food: [String] {
  6. get {
  7. if let returnValue = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String] {
  8. return returnValue == [] ? ["muesli","banana"] : returnValue
  9. } else {
  10. return ["muesli","spaghetti"]
  11.  
  12. food = []
  13. print(food) // prints: ["muesli","banana"]
  14.  
  15. NSUserDefaults.standardUserDefaults().setObject(nil,"banana"]
  16. }
  17.  
  18. }

猜你在找的Swift相关文章