我正在创建一个iPhone应用程序和iWatch应用程序。我想将iPhone应用程序中的数据共享到iWatch应用程序。 我正在使用app组并使用套装名称在User Defaults中保存数据。但是当我在iWatch中检索值时,它总是为零。
我创建了三个配置文件。一个用于app,第二个用于手表套件,第三个用于手表套件扩展。这三个人都有相同的组名。从我已启用应用程序共享的功能中,它显示了我通过单击启用的正确组名。
之后,在ViewController.swift(iPhone App)中
let userDefaults = UserDefaults.standard
userDefaults.addSuite(named: "group.group.com.demo.appgroup")
userDefaults.set("12345", forKey: "isDarkModeEnabled")
userDefaults.synchr
onize()
并在InterfaceController.swift中(在Watch Extension中)
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)
}
但是当我获取数据fin watch扩展时,它总是给我零。
请帮助解决此问题。
由于
答案 0 :(得分:1)
您是否创建了共享应用组?
Apple文档详细介绍了如何设置它。此外,它是一个有点文档证明的问题,人们无法让用户默认在模拟器中工作,而它们在真实设备上工作正常。
我知道有关设置包的说明,但它的价值交换方式相同。值得注意的是,Apple真的希望您使用WCSession在设备之间传输数据。
答案 1 :(得分:0)
你可以这样做
1.在功能
中的Watch Extension和Main App中启用AppGroup2.尝试代码:
let AppGroup = "group.com.demo.appgroup"
let AppUserDefaults = UserDefaults(suiteName: AppGroup)
AppUserDefaults.set("12345", forKey: "isDarkModeEnabled")
AppUserDefaults?.synchronize()