UserDefault始终返回nil

时间:2016-11-14 13:05:09

标签: ios iphone swift3 watchkit userdefaults

UserDefaults无法在我的应用中使用。请在AppDelegate文件下找到以下代码。

let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx");
sharingData?.set("vincenzo", forKey:"username");
sharingData?.synchronize();

在Watch的应用程序的InterfaceController中,为了能够检索值,所以我这样做了:

override func awake(withContext context: Any?) {
let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx");

let username = sharingData?.object(forKey: "username");
    print("Value username \(username)");
}

请告诉我,我做错了什么!

3 个答案:

答案 0 :(得分:0)

Swift3 UserDefaults更明智地获得了储值。在下面的行中,您将存储String值而不指定它!:

sharingData?.set("vincenzo", forKey:"username");

所以,为了得到这个,你需要写如下:

let username = sharingData?.string(forKey: "username");
    print("Value username \(username)");
}

根据您的商店获取值,这是更好的上下文。

答案 1 :(得分:0)

请改为尝试:

let defaults = UserDefaults.standard 
defaults.set("group.macuser79.xxx", forKey:"username")
defaults.synchronize()

访问商店:

let defaults = UserDefaults.standard
let username = defaults.string(forKey: "username")

我承认我以前没有试过init()我自己的UserDefaults实例,但是它的标准实例(由iOS制作成单例)是一种很好的做法

另外,请勿忘记正确打开选购件。

答案 2 :(得分:0)

设置:

UserDefaults(suiteName: "group.macuser79.xxx")?.set("vincenzo", forKey: "username")

访问:

UserDefaults(suiteName: "group.macuser79.xxx")!.string(forKey: "username")