首页 > 解决方案 > 在目标之间共享 UserDefault 不起作用

问题描述

在目标之间共享 UserDefault 不起作用。我已经为这两个目标设置了应用组,但数据在 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
}

这是应用程序组(为每个目标设置!):

在此处输入图像描述

标签: iosswiftxcodewatchosuserdefaults

解决方案


据此:_

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

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

听起来这些教程是为旧版本的 watchOS 编写的,WatchKit Extension 在 iPhone 上运行。从那以后就没有这种情况了watchOS 2


推荐阅读