应用程序共享提供零数据

时间:2018-01-11 04:21:26

标签: ios swift watchkit apple-watch share-extension

我正在创建一个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扩展时,它总是给我零。

请帮助解决此问题。

由于

2 个答案:

答案 0 :(得分:1)

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

Apple文档详细介绍了如何设置它。此外,它是一个有点文档证明的问题,人们无法让用户默认在模拟器中工作,而它们在真实设备上工作正常。

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

我知道有关设置包的说明,但它的价值交换方式相同。值得注意的是,Apple真的希望您使用WCSession在设备之间传输数据。

答案 1 :(得分:0)

你可以这样做

1.在功能

中的Watch Extension和Main App中启用AppGroup

2.尝试代码:

let AppGroup = "group.com.demo.appgroup"
let AppUserDefaults = UserDefaults(suiteName: AppGroup)
AppUserDefaults.set("12345", forKey: "isDarkModeEnabled")
AppUserDefaults?.synchronize()