【问题标题】:Cocoa Touch Framework no more compatible with WatchKit extension? I need Watch Framework?Cocoa Touch 框架不再兼容 WatchKit 扩展?我需要手表框架吗?
【发布时间】:2015-12-17 10:43:03
【问题描述】:

我正在使用 Xcode 7 将我的一个应用程序更新到 Swift 2.0

我在 Xcode 6 和 Watch OS 1 上的应用使用 Cocoa Touch 框架iOS 应用WatchKit 扩展 之间共享核心数据模型.

使用 Swift 2.0 和 Xcode 7,我注意到 我的框架不再在我的 WatchKit 扩展中被识别,我明白了

没有这样的模块模型

import Model 

我在网上读到了一些关于它的内容,一个解决方法是创建一个Watch Framework

我尝试了这种方式,现在 iOS 应用和 WatchKit 扩展都可以看到框架。

1) Cocoa Touch 框架不再与 WatchKit 扩展兼容,或者我缺少其他东西?


更新

2) 我应该把我的核心数据模型放在哪里?即使用户只有 iOS 设备,我的应用程序也应该可以在没有 Apple Watch 应用程序的情况下使用。我需要哪种类型的框架或解决方法?

【问题讨论】:

    标签: ios xcode watchkit apple-watch watchos-2


    【解决方案1】:

    在 watchOS 1.0 中,手表应用程序扩展在 iPhone 上执行,因此为 iPhone 构建的框架也可用于 watchOS 扩展。

    在 watchOS 2.0 中,手表应用程序扩展不再在 iPhone 上执行,而是在 Watch 上执行。为 iOS 构建的框架与 watchOS 不兼容,因为 iOS 和 watchOS 是不同的操作系统。
    通过为 watchOS 构建框架,您的框架能够在 Watch 上运行。


    在 watchOS 2.0 中使用 CoreData 的注意事项:如果您想在 watchOS 2.0 中与您的手表共享您的数据模型,您必须在手表和手机之间同步数据,因为您的手表应用程序扩展现在已执行在您的手表上,核心数据模型存储在手表的内部存储中。

    【讨论】:

    • 好的,我的嫌疑人已经确认了。只有一件事:如果我创建了一个 Watch 框架但用户只使用 iOS 应用程序?因为我的应用程序也可以在没有 Watch 的情况下使用,只需在 iOS 设备上即可。我应该把我的核心数据放在哪里?我更新了我的问题:)
    【解决方案2】:

    正如@blobbfuesch 所写,它们不兼容,因为随着 watchOS 2 的出现,它们在不同的操作系统上执行,因此您需要创建一个单独的 Watch 框架。

    起初我遇到了在框架之间复制代码的问题(主要是模型),并通过创建一个“共享框架代码”文件夹来解决这个问题,该文件夹已放置所有共享代码,并为 2 选择了“目标成员资格”复选框框架(Cocoa Touch 和 Watch)。

    更新这是你的情况:Using Core Data with watchOS 2.0

    您应该使用 WatchConnectivity 特别是 WCSession 类在 Watch 和 Phone 之间同步您的数据。它们有单独的文件系统,因此您需要在它们之间复制数据,但这不适用于我上面提到的代码。

    【讨论】:

    • 感谢您提供其他问题的链接!
    猜你喜欢
    • 2015-09-14
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多