在目标之间共享 UserDefault 不起作用

Posted

技术标签:

【中文标题】在目标之间共享 UserDefault 不起作用【英文标题】:Sharing UserDefault between targets doesn't work 【发布时间】:2021-05-14 16:59:54 【问题描述】:

。我已经为这两个目标设置了应用组,但数据在 watchOS 上不可用。查看我的简化代码:

ios 上:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 

    let defaults = UserDefaults(suiteName: "group.my-bundle-id")!
    defaults.set(true, forKey: "testKey")

    return true

在 watchOS 上:

func applicationDidFinishLaunching() 
    let defaults = UserDefaults(suiteName: "group.my-bundle-id")!
    let uddata = defaults.bool(forKey: "testKey")
    print(uddata) // Still returns false

这是应用组(为 EACH 目标设置!):

【问题讨论】:

【参考方案1】:

根据this:

现代版本的 watchOS 在 Apple Watch 上运行您的 WatchKit 扩展程序。因此,您不能通过 App Group 在您的 iOS 应用程序和 WatchKit 扩展程序之间共享内容;你必须使用某种网络技术。许多人为此使用 WatchConnectivity。

// 我浏览了很多在线教程……

听起来这些教程是为旧版本的 watchOS 编写的,WatchKit 扩展在 iPhone 上运行。自从watchOS 2 之后,情况就不是这样了。

【讨论】:

以上是关于在目标之间共享 UserDefault 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6:在功能模块之间共享组件不起作用

两个活动之间的共享数组列表不起作用

共享元素转换在父片段和子片段之间不起作用(嵌套片段)

iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用

使用 GLFW3 在 OpenGL 上下文之间共享纹理不起作用

服务和用户模式进程之间的共享全局事件不起作用