Неопределенный символ: _swift_getOpaqueTypeConformance — React Native

#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 более конкретная строка: 98

2. 2-е закрытие выполняется асинхронно и, похоже, возвращает null. вы разместили вход в систему, чтобы посмотреть, что происходит?

3. @OlSen Я не проводил протоколирование, потому что не думал, что мне нужно отлаживать, поскольку это отлично работает в обычной быстрой сборке без React Native. И var body: some view это просто стандартный код, требуемый View протоколом.

4. несоответствие непрозрачного типа для тела переменной (TrianglePath, GuitarPickView, ColorWheelView и GeometryProxy, которое является NSObject, а не view ).

5. github.com/Adyen/adyen-ios/issues/305