Cocoa Touch Framework 不再与 WatchKit 扩展兼容?我需要手表框架?

Cocoa Touch Framework no more compatible with WatchKit extension? I need Watch Framework?

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

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

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

No such module Model

import Model 

我在网上读到了一些相关内容,一种解决方法是创建一个 Watch Framework:

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

1) Cocoa Touch 框架不再与 WatchKit 扩展兼容,或者我还遗漏了什么?


更新

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

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

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


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

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

起初我遇到了在框架(主要是模型)之间复制代码的问题,并通过创建一个 "Shared Framework Code" 文件夹解决了这个问题,所有共享代码都放在了文件夹中,"Target membership" 复选框是为 2 个框架选择 (Cocoa Touch and Watch)。

更新 这是你的情况:

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