我的Apple Watch项目在Swift中。我曾经用CocoaPods安装MMWormhole,
我创建了这些链接中描述的桥接头:

http://bencoding.com/2015/04/15/adding-a-swift-bridge-header-manually/

How to call Objective-C code from Swift

创建桥接标头时,我将其定位到我的iPhone应用程序,还观看了Extension。

桥接header.h,我有这个:

#import "MMWormhole.h"

在我的iPhone应用程序View Controller中,我有这个:
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 App。但仍然...不起作用。

我还在WatchExtension的podfile目标中使pod'MMWormhole','〜> 1.2.0'。但仍未在Watch接口Controller中识别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.

这是逐步的简短说明:

objective-c 桥
  • 为iPhone App和Watch Ext添加应用程序组
  • 添加 objective-c
  • 既针对
  • ,也针对
  • 构建设置:在iOS和Watch Ext的相对路径中设置* .h。设置* .h相对路径。例如
    ../MMWormholeTest/MMWormholeTest/MMWormholeTest-Bridging-Header.h
  • 添加标题搜索路径:$ {PRODS_ROOT} / Headers,两个IOS 7 Watch Ext的递归

  • MMW通孔
  • 可可豆荚。
  • 在Podfile中为iOS和Watch Ext设置pod'MMWormhole','〜> 1.2.0'目标
  • 在桥接头文件中设置#import“MMWormhole.h”。
  • 在ViewController和InterfaceOController中的
  • 中,将wormhole设置为类作用域变量。例如var wormhole:MMWormhole!
  • 在ViewDidLoad和awakeWithContext中实例化MMWormhole
    在WatchExt中,将监听器设置在awakeWithContext中,并由于闭包而使用self.lable.setText。例如self.label.setText(messageObject!as!String)
  • 无需注册堆栈接收器中的其他一些MMWormhole示例中所示的接收器。
  • 10-05 20:03