Компонент ReactNative Swift: как установить конструктор

Я работаю над проектом ReactNative уже неделю, и я хочу создать свой собственный нативный компонент Objc/Swift.

Я следовал за официальной документацией, но нахожу это не настолько подробным. Я могу использовать обратный вызов и т. Д., И я также следовал этому, но я не могу найти то, что я хочу.

Я хочу использовать конструктор init() моего класса, но каждый раз, когда я компилирую, приложение запускается, и XCode выдает следующую ошибку:

fatal error: use of unimplemented initializer 'init()' for class 'myProject.MyModule'

Я пробовал много вещей, таких как добавление @objc перед init(), но ничего не работает. Я немного потерян.

Мои файлы (я использую Swift 3):

MyModule.m:

#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(MyModule, NSObject)

RCT_EXTERN_METHOD(aMethod:(RCTResponseSenderBlock)callback)

@end

MyModule.swift:

import Foundation
@objc(MyModule)
class MyModule: NSObject {

  var myFirstString: String = ""

  init(myString: String) {

    self.myFirstString = myString

    super.init()
  }

  @objc func aMethod(_ callback: RCTResponseSenderBlock) -> Void {
    callback([NSNull(), self.myFirstString])
  }
}

MyModule-Bridging-Header.h:

#import <React/RCTBridgeModule.h>

1 ответ

Ваш модуль требует настройки основной очереди, поскольку он переопределяет init но не реализует requiresMainQueueSetup, В будущем выпуске React Native будет по умолчанию инициализировать все собственные модули в фоновом потоке, если явно не отключено. (цитата из RCTLog)

Пожалуйста, добавьте следующий код в MyModule.swift, чтобы решить эту проблему.

@objc static func requiresMainQueueSetup() -> Bool {
    return false
}
Другие вопросы по тегам