ios - 应用程序共享提供零数据

标签 ios swift watchkit apple-watch share-extension

我正在创建 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 文档详细介绍了如何进行设置。此外,这是一个有据可查的问题,人们很难让用户默认值在模拟器中工作,而它们在真实设备上工作得很好。

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

我知道这谈论的是设置 bundle ,但它的工作方式与值(value)交换相同。需要注意的是,Apple 确实希望您使用 WCSession 在设备之间传输数据。

关于ios - 应用程序共享提供零数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199696/

相关文章:

iOS如何查找用户电话号码的国家代码?

ios - 如何在iOS中测试空对象?

ios - 在 XMPPFrameWork ios 中将 XMPPMessage 保存在 CoreData 中

swift - Apple Watch 如何监听 iPhone 上的数据变化?

bluetooth-lowenergy - Watch OS 2 native 应用程序蓝牙设备连接

ios - watchOS 2.0 - 无法取消 WCSessionFileTransfer

ios - Firebase 连接管理器应该只返回一个结果

ios - RLMException - 在 TableView 中滚动时对象已被删除

ios - 如何在同一个swift框架中访问其他类?

ios - Alamofire 上传仅在 iphone 6s plus 上崩溃