获取 Watch 中 MMWormhole 的未解析标识符 InterfaceController.swift
Get Unresolved Identifier for MMWormhole in Watch InterfaceController.swift
我的 Apple Watch 项目在 Swift。我已经使用 CocoaPods 安装了 MMWormhole,
我按照这些链接中的描述创建了桥接 header:
http://bencoding.com/2015/04/15/adding-a-swift-bridge-header-manually/
How to call Objective-C code from Swift
当我创建桥接 header 时,我将其定位到我的 iphone 应用程序,并且还观看了扩展程序。
桥接header.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")
}
它抱怨 "Use of unresolved identifier MMWormhole"。
我什至尝试使用#import "MMWormholeClient.h" 但没有什么可以解决这个问题。
我在创建桥接 header 时也尝试过,只针对 iphone 应用程序。但是还是……不行。
我还在 WatchExtension 的 podfile 目标中创建了 pod 'MMWormhole', '~> 1.2.0'。但仍未在 Watch interfaceController 中识别出 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
- 添加 Header 搜索路径: ${PRODS_ROOT}/Headers ,两者递归 IOS 7 Watch Ext
MM虫洞
- Cocoapods吧。
- 为 iOS 和 Podfile 中的 Watch Ext 设置 pod 'MMWormhole','~> 1.2.0' 目标
- 在桥接 header 文件中设置 #import “MMWormhole.h”。
- 在 ViewController 和 InterfaceOController 中,将虫洞设置为 class 范围变量。例如var wormhole:MMWormhole!
- 在ViewDidLoad和awakeWithContext中实例化MMWormhole
在 WatchExt 中,在 awakeWithContext 中设置侦听器,并使用 self.lable.setText 因为关闭。例如self.label.setText(messageObject!as!String)
- 无需像 Stack overflow 中的其他一些 MMWormhole 示例所示注册接收器。
我的 Apple Watch 项目在 Swift。我已经使用 CocoaPods 安装了 MMWormhole, 我按照这些链接中的描述创建了桥接 header:
http://bencoding.com/2015/04/15/adding-a-swift-bridge-header-manually/
How to call Objective-C code from Swift
当我创建桥接 header 时,我将其定位到我的 iphone 应用程序,并且还观看了扩展程序。
桥接header.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")
}
它抱怨 "Use of unresolved identifier MMWormhole"。
我什至尝试使用#import "MMWormholeClient.h" 但没有什么可以解决这个问题。
我在创建桥接 header 时也尝试过,只针对 iphone 应用程序。但是还是……不行。
我还在 WatchExtension 的 podfile 目标中创建了 pod 'MMWormhole', '~> 1.2.0'。但仍未在 Watch interfaceController 中识别出 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
- 添加 Header 搜索路径: ${PRODS_ROOT}/Headers ,两者递归 IOS 7 Watch Ext
MM虫洞
- Cocoapods吧。
- 为 iOS 和 Podfile 中的 Watch Ext 设置 pod 'MMWormhole','~> 1.2.0' 目标
- 在桥接 header 文件中设置 #import “MMWormhole.h”。
- 在 ViewController 和 InterfaceOController 中,将虫洞设置为 class 范围变量。例如var wormhole:MMWormhole!
- 在ViewDidLoad和awakeWithContext中实例化MMWormhole 在 WatchExt 中,在 awakeWithContext 中设置侦听器,并使用 self.lable.setText 因为关闭。例如self.label.setText(messageObject!as!String)
- 无需像 Stack overflow 中的其他一些 MMWormhole 示例所示注册接收器。