1

我是 iOS 开发的新手。我创建了一个 swift 类,如下所示:

import WatchConnectivity;
import HealthKit;
@objc class Blah : NSObject, WCSessionDelegate { 
...
}

我需要 @objc 以便我可以使用来自 Objective-C 的这个类(已经存在)。问题是当编译器创建桥 [productName]-Swift.h 时,它抱怨它找不到 WCSessionDelegate。确切的错误:

找不到“WCSessionDelegate”的协议声明;你的意思是“NSURLSessionDelegate”吗?

SWIFT_CLASS("_TtC8test8Blah")
@interface  Blah: NSObject <WCSessionDelegate>

如果我将其更改为以下,而不是实现该委托,它会起作用。

@objc class Blah : NSObject {
  ...
  func setSessionDelegate(delegate:WCSessionDelegate) -> Blah {
    self.mDelegate = delegate;
    return(self)
  }
}

我更喜欢前一种方式。如何解决此编译错误?谢谢

4

1 回答 1

0

看起来该[productName]-Swift.h文件仅在支持 mosules 时才添加包含:

#if defined(__has_feature) && __has_feature(modules)
@import ObjectiveC;
@import WatchConnectivity;
@import Foundation;
#endif

在我的情况下,也可能在你的情况下,它们被禁用。如果您不能或不会启用它们,则可以确保每次都自己包含连接标头,例如

#import <WatchConnectivity/WatchConnectivity.h>
#import "MyApp-Swift.h"

https://stackoverflow.com/a/24064015/67824

于 2015-12-01T18:03:00.120 回答