我的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 桥
../MMWormholeTest/MMWormholeTest/MMWormholeTest-Bridging-Header.h
MMW通孔
在WatchExt中,将监听器设置在awakeWithContext中,并由于闭包而使用self.lable.setText。例如self.label.setText(messageObject!as!String)