我正在创建 iPhone 应用程序和 iWatch 应用程序。我想将 iPhone 应用程序的数据共享到 iWatch 应用程序。 我正在使用应用程序组,并使用套装名称将数据保存在用户默认值中。但是当我在 iWatch 中检索值时,它总是为零。
我创建了三个配置文件。第一个用于应用程序,第二个用于 watch 套件,第三个用于 watch 套件扩展。这三个人都有相同的组名。从功能中,我已启用应用程序共享,并且它显示了我通过单击它启用的正确组名称。
之后,在 ViewController.swift(iPhone 应用程序)中
let userDefaults = UserDefaults.standard
userDefaults.addSuite(named: "group.group.com.demo.appgroup")
userDefaults.set("12345", forKey: "isDarkModeEnabled")
userDefaults.synchr
onize()
以及 InterfaceController.swift(在 Watch 扩展中)
let storageKey = "group.group.com.demo.appgroup"
let userStorage = UserDefaults(suiteName: storageKey)
// Get setting from storage or default
if userStorage?.object(forKey: "isDarkModeEnabled") == nil
{
print("Data is nil")
}
else
{
lblTest.setText(userStorage?.object(forKey: "isDarkModeEnabled") as? String)
}
但是当我在 watch 扩展中获取数据时,它总是给我零。
请帮忙解决这个问题。
谢谢
最佳答案
您是否创建了共享应用程序组?
Apple 文档详细介绍了如何进行设置。此外,这是一个有据可查的问题,人们很难让用户默认值在模拟器中工作,而它们在真实设备上工作得很好。
我知道这谈论的是设置 bundle ,但它的工作方式与值(value)交换相同。需要注意的是,Apple 确实希望您使用 WCSession 在设备之间传输数据。
关于ios - 应用程序共享提供零数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199696/