Как передать объект как зависимость внутри цели c init? - PullRequest
0 голосов
/ 30 апреля 2019

Это мой интерфейс objc:

@interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
- (id) initWithLogger:(Loggable *)logger; //issue: Expected a type
- (void) didPressRegistrationButton:(NSString *)code;
@end

У меня также есть личный интерфейс:

@interface MobileKeysController ()
@property(nonatomic) Loggable *logger;
@end

и пользовательский init:

- (id)initWithLogger: (Loggable *) logger_ {
    self = [super init];
    // how can I assign it here from an init?
    return self;
}

Это мойОпределение Swift:

protocol Loggable: class {
    func log(_ category: FirebaseCategory, _ type: FirebaseEventType, _ dataProvider: FirebaseEventDataProvider)
}

@objc class FirebaseLogger: NSObject, Loggable {
    // MARK: - Loggable
    func log(_ category: FirebaseCategory, _ type: FirebaseEventType, _ dataProvider: FirebaseEventDataProvider) {
        log(category.rawValue, type.value, dataProvider.parameters)
    }
}

И мне нужно использовать его из файла Swift, например:

let logger = FirebaseLogger()
return MobileKeysController(logger: logger)

1 Ответ

0 голосов
/ 30 апреля 2019

Используйте id<Loggable> вместо Loggable * и пометьте протокол как @objc

...