#objective-c #react-native #swiftui
#objective-c #react-native #swiftui
Вопрос:
Я пытаюсь перенести представление SwiftUI в react native, следуя этому руководству. Он отлично работает в проекте swift, но не в проекте react native.
Я получаю следующую ошибку:
Undefined symbols for architecture x86_64:
"_swift_getOpaqueTypeConformance", referenced from:
lava.ColorWheelView.body.getter : some in ColorWheelView.o
closure #2 (SwiftUI.GeometryProxy) -> <<opaque return type of lava.ColorWheelView.makeView(SwiftUI.GeometryProxy) -> some>>.0 in lava.ColorWheelView.body.getter : some in ColorWheelView.o
associated type witness table accessor for SwiftUI.View.Body : SwiftUI.View in lava.ColorWheelView : SwiftUI.View in lava in ColorWheelView.o
l_get_witness_table qd0__7SwiftUI4ViewHD3_AaBPAAE7gesture_9includingQrqd___AA11GestureMaskVtAA0F0Rd__lFQOyAA15ModifiedContentVyAA6ZStackVyAA05TupleC0VyAJyAA06_ShapeC0VyAA9RectangleVAA5ColorVGAA12_FrameLayoutVG_AJy4lava010GuitarPickC0VAA13_OffsetEffectVGtGGAA09_PositionP0VG_AA06_EndedF0VyAA0f5StateF0VyAA08_ChangedF0VyAA04DragF0VGSo7CGPointVSgGGQo_HO in ColorWheelView.o
associated type witness table accessor for SwiftUI.View.Body : SwiftUI.View in lava.TrianglePath : SwiftUI.View in lava in GuitarPickView.o
associated type witness table accessor for SwiftUI.View.Body : SwiftUI.View in lava.GuitarPickView : SwiftUI.View in lava in GuitarPickView.o
"_swift_getTypeByMangledNameInContextInMetadataState", referenced from:
___swift_instantiateConcreteTypeFromMangledNameAbstract in ColorWheelView.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Для воспроизведения я создал это репозиторий Github
Скопируйте эти файлы в проект react native и попробуйте выполнить сборку. Обязательно замените импорт файла заголовка именем вашего тестового проекта "<Replace This>-Swift.h"
Моя цель сборки — симулятор iOS 13.5 для iPhone 11 Pro Max.
Комментарии:
1.это в значительной степени указывает на что-то в этой
var body:
строке: 90 более конкретная строка: 982. 2-е закрытие выполняется асинхронно и, похоже, возвращает null. вы разместили вход в систему, чтобы посмотреть, что происходит?
3. @OlSen Я не проводил протоколирование, потому что не думал, что мне нужно отлаживать, поскольку это отлично работает в обычной быстрой сборке без React Native. И
var body: some view
это просто стандартный код, требуемыйView
протоколом.4. несоответствие непрозрачного типа для тела переменной (TrianglePath, GuitarPickView, ColorWheelView и GeometryProxy, которое является NSObject, а не view ).