无法找到WCSessionDelegate'的协议声明。

时间:2015-09-29 21:26:49

标签: ios objective-c swift watch-os-2 watch-os

我是iOS开发的新手。我创建了一个如下的快速类:

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

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

无法找到' WCSessionDelegate&#39 ;;你的意思是' NSURLSessionDelegate'?

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

如果我将其更改为以下代码,而不是实现该委托,它可以正常工作。

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

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

1 个答案:

答案 0 :(得分:0)

如果支持mosule,[productName]-Swift.h文件似乎只会添加include:

#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