1

iOS開発初心者です。次のように迅速なクラスを作成しました。

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

このクラスを object-C (既に存在する) から使用できるようにするには、@objc が必要です。問題は、コンパイラがブリッジ [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ファイルはインクルードのみを追加するようです:

#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 に答える