Компонент 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
}