2

我正在创建一个 iPhone 应用程序和 iWatch 应用程序。我想将数据从 iPhone 应用程序共享到 iWatch 应用程序。我正在使用应用程序组并使用西装名称将数据保存在用户默认值中。但是当我在 iWatch 中检索值时,它总是为零。

我创建了三个配置文件。一个用于应用程序,第二个用于手表套件,第三个用于手表套件扩展。所有三个具有相同的组名。并且从我启用了应用程序共享的功能中,它显示了我通过单击它启用的正确组名。

之后,在 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 手表扩展时,它总是给我零。

请帮助解决这个问题。

谢谢

4

2 回答 2

2

您是否创建了共享应用组?

Apple 文档详细介绍了如何进行设置。此外,这是一个有据可查的问题,即人们很难让用户默认在模拟器中工作,而他们在真实设备上却可以正常工作。

https://developer.apple.com/library/content/documentation/General/Conceptual/WatchKitProgrammingGuide/Settings.html

我知道这是关于设置捆绑的,但它在价值交换方面的工作方式相同。需要注意的是,Apple 确实希望您使用 WCSession 在设备之间传输数据。

于 2018-01-11T06:01:11.227 回答
0

你可以这样做

1.在Watch Extension和Main App的功能中启用AppGroups

2.试用代码:

let AppGroup = "group.com.demo.appgroup"
let AppUserDefaults = UserDefaults(suiteName: AppGroup)
AppUserDefaults.set("12345", forKey: "isDarkModeEnabled")
AppUserDefaults?.synchronize()
于 2018-01-11T07:07:19.143 回答