Как мне предоставить пользовательскую реализацию init для интерфейса с использованием target- c? - PullRequest
1 голос
/ 25 февраля 2020

Я просто определил протокол Swift следующим образом:

@objc protocol MobileKeyable {
   var assaAbloyLockServiceCode: Int { get }
}

Затем я использую его в своем классе - c:

- (id)initWithComposition: (id<MobileKeyable>)composition {
    self = [super init];
    if (self) {
        _lockServiceCodes = @[@([composition assaAbloyLockServiceCode])];
    }
    return self;
}

Затем я хотел бы инициализировать этот контроллер в Swift вот так:

let composition = //here MobileKeyable
MobileKeysController(composition: composition)

Так что мне нужно выставить этот инициализатор для интерфейса target- c:

#import "MyProject-Swift.h"
@interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
- (instancetype) initWithComposition: (id<MobileKeyable>)composition;
@end

, но здесь у меня ошибка: MyProject-Swift.h file not found. Почему?

1 Ответ

1 голос
/ 25 февраля 2020

Может быть, Xcode пытается избежать некоторых циклов ... просто предположение. Попробуйте вместо этого переслать декларацию

@protocol MobileKeyable;

@interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
- (instancetype) initWithComposition: (id<MobileKeyable>)composition;
@end
...