我的 Apple Watch 项目在 Swift 中。 我用CocoaPods安装了MMWormhole,我创建了桥接标头,如以下链接中所述:
http://bencoding.com/2015/04/15/adding-a-swift-bridge-header-manually/
如何从 Swift 调用 Objective-C 代码
当我创建桥接标头时,我将其定位到我的 iPhone 应用程序,并观看扩展。
桥接标头.h,我有这个:
#import "MMWormhole.h"
在我的iPhone应用程序视图控制器中,我有这个:
import UIKit
import Foundation
let wormhole = MMWormhole(applicationGroupIdentifier: "group.cocoShareData", optionalDirectory: "wormhole")
而且没有抱怨。
但是,在我的手表接口控制器中,我有这个:
import WatchKit
import Foundation
...
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
let wormhole = MMWormhole(applicationGroupIdentifier: "group.cocoShareData", optionalDirectory: "wormhole")
}
它抱怨"使用未解析的标识符MMWormhole"。
我什至尝试使用 #import"MMWormholeClient.h",但没有什么可以解决这个问题。
我也尝试在创建桥接标头时,只需在 iphone 应用程序上定位即可。 但是...不行。
我还在 WatchExtension 的 podfile 目标中制作了 pod 'MMWormhole'、'~> 1.2.0'。 但仍未在手表界面中识别出 MMWormhole 控制器
我错过了什么吗?
这是我的项目:https://www.dropbox.com/s/tsajeoopnghyl1g/MyTestCocoData.zip?dl=0
的答案。 经过几天的斗争和代码导师的帮助:
问题是:
1) The Objective-C bridge has to set the correct path and header search path so both IOS & WatchExt can use
2) The PodFile in MMWormhole must target for both iOS & WatchExt.
3) The code in MMWormhole npm page is not correct. Move the instantiation of MMWormhole out and be a class Variable.
以下是简短的分步:
目标C桥
- 为 iPhone App 和 Watch Ext 添加应用组
- 添加目标 C
- 同时定位两者
- 构建设置:在 iOS 和 Watch Ext 的相对路径中设置 *.h 设置相对路径,例如../MMWormholeTest/MMWormholeTest/MMWormholeTest-Bridging-Header.h
- 添加标题搜索路径:${PRODS_ROOT}/标头,两个 IOS 7 Watch Ext 的递归
唰��
- 可
- 可豆荚。
- 在 Podfile 中为 iOS 和 Watch Ext 设置 pod 'MMWormhole', '~> 1.2.0' 目标
- 在桥接头文件中设置 #import"MMWormhole.h"。
- 在ViewController和InterfaceOController中,将Wormhole设置为类范围变量。 例如VaR虫洞:MMWormhole!
- 在ViewDidLoad中实例化MMWormhole和awakeWithContext。在 WatchExt 中,在 awakeWithContext 中设置侦听器,并使用 self.lable.setText 因为闭包。例如 self.label.setText(messageObject! as!字符串)
- 无需注册接收器,如堆栈溢出中的其他一些MMWormhole示例所示。