UserDefaults.standard.string()返回零
问题描述:
我在Swift中“继承了”iOS Xcode项目。我从来没有编写过Swift或之前使用过Xcode。我将项目从一个用户帐户复制到另一个用户帐户并将其检入到git仓库中。UserDefaults.standard.string()返回零
现在我很害怕(复制,权限?)可能导致应用程序无法正确读取其设置。因为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")
}
}
答
您应该下面的代码使用与验证,首先删除应用程序,并重新安装。然后使用,你会获得成功。
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"
* userdefaults *数据存储在设备或模拟器上的沙箱目录中,而不是存储在您的代码中。 – Itachi
我认为,也许如果xcode无法读取plist文件,那么它不会被编译到应用程序。 – tzippy
在10.3.2和10.3.3之间是否发生了可能对此产生影响的任何事情? – tzippy