UserDefaults.standard.string()返回nil

时间:2017-08-25 08:42:33

标签: ios swift nsuserdefaults

我"继承" Swift中的iOS Xcode项目。我以前从未在Swift中编程或使用过Xcode。我将项目从一个用户帐户复制到另一个用户帐户并将其检入git仓库。

现在我害怕这个(复制,权限?)可能是应用程序无法正确读取其设置的原因。因为UserDefaults.standard.string(forKey: "pref_Foo")会返回nil,但在Settings.Bundle's Root.plist中显然是pref_Foo标识符。 该应用程序以前工作过,所以我不知道这突然来自哪里。 由于我对XCode不太熟悉所以我现在所做的就是调试应用程序以查看UserDefaults.standard.string(forKey: "pref_Foo")nil

我怎么能解决这个问题? 谢谢!

编辑:这是我在ViewController.swift

中的代码的一部分
 override func viewDidLoad() {
        super.viewDidLoad()
  loadSettings()

...

 }

func loadSettings()
{
  if(UserDefaults.standard.object(forKey: "pref_Foo") == nil)
  { 
   printf("Error")
  }
}

1 个答案:

答案 0 :(得分:0)

您应该使用以下代码进行验证,首先删除应用并重新安装。然后使用,你将获得成功。

var UserStatus:String {
    get{
        return UserDefaults.standard.object(forKey: "pref_Foo") as? String ?? "0"
    }
    set(status){
        UserDefaults.standard.set(status, forKey: "pref_Foo")
        UserDefaults.standard.synchronize()
    }
}

代码的使用如下。

if (UserStatus ==  "pref_Foo"){
    self.logoutSuccess()
} else {
    self.loginSuccess()
}

在下面给出的一行代码中更新或设置值非常简单。

        UserStatus = "pref_Foo"