我的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应用程序上定位。但仍然......不起作用。
我也制作pod'MMWormhole','〜> 1.2.0'在WatchExtension的podfile目标中。但仍未在Watch interfaceController中识别MMWormhole
我错过了什么吗?
这是我的项目:https://www.dropbox.com/s/tsajeoopnghyl1g/MyTestCocoData.zip?dl=0
答案 0 :(得分:2)
这是我的答案。经过几天的努力和代码导师的帮助:
问题是:
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 Bridge
<强> MMWormhole 强>