Swift를 React-Native로 브리징할 때 "인식된 Objective-C 메서드가 아닙니다"가 표시됨
이 가이드에 따라 React-Native 0.33 코드를 매우 간단한 Swift 메서드에 브리지하려고 합니다만, 얻을 수 있는 것은 이것뿐입니다.show:(NSString *)name is not a recognized Objective-C method
.
제 코드는 다음과 같습니다.
Switch Manager.swift
import Foundation
@objc(SwitchManager)
class SwitchManager: NSObject {
@objc func show(name: String) -> Void {
NSLog("%@", name);
}
}
Switch Manager Bridge.h
#import "RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(SwitchManager, NSObject)
RCT_EXTERN_METHOD(show:(NSString *)name)
@end
Switch Manager-Bridging-Header.h
#import "RCTBridgeModule.h"
그럼 내 위에서index.ios.js
스위치 매니저를 Import할 파일import { SwitchManager } from 'NativeModules';
및 호출SwitchManager.show('One');
여기서 오류가 발생했습니다.
뭐가 잘못됐는지 모르겠어요.
이는 Swift 3의 변경 사항 중 일부이며 밑줄을 추가하면 해결할 수 있습니다.
import Foundation
@objc(SwitchManager)
class SwitchManager: NSObject {
@objc func show(_ name: String) {
NSLog("%@", name);
}
}
Swift 3의 0046 제안 참조: Swift.org 이행가이드의 "Consistent first argument labels"에서 호출된 첫 번째 라벨을 포함하여 모든 파라미터에서 일관된 라벨 동작을 확립합니다.
기본적으로 Objective-C의 Swift 방식은 Swift 3를 통해 바뀌었다.
편집: 이는 Swift 4에서도 마찬가지입니다.여기서 "Ompting Argument Labels" (인수 라벨 생략)
이것은 xcode 8.0과 swift 3에서 나에게 효과가 있었다.
@objc func openPresentedViewController(_ name: String,name1: String,name2: String){
}
더하다_
라벨이 붙어 있지 않은 멤버에게
RCT_EXTERN_METHOD(methodName:(NSString *)name name1:(NSString *)name1 name2:(NSString *)name2)
목적에서 알 수 있듯이 c 메서드 이름은 레이블이 없는 매개 변수 추가입니다._
그것을 재빠르게 처리하다.
나는 이 문제로 하루 종일 싸웠다.다음과 같이 Swift 컴파일러가 레거시 버전을 사용하도록 설정함으로써 해결됩니다(XCode 8은 Swift 3을 선호합니다).
[ Build Settings ]> [ Use Legacy Swift Language Version ](레거시 스위프트 언어 버전 사용)까지 스크롤 다운합니다.
기능 선언 전에 데코레이터 @objc를 넣는 것을 잊어버려서 같은 오류가 발생했습니다.
언급URL : https://stackoverflow.com/questions/39692230/got-is-not-a-recognized-objective-c-method-when-bridging-swift-to-react-native
'source' 카테고리의 다른 글
react-icons 패키지에서 글꼴 표시 아이콘을 확대(크게)하는 방법 (0) | 2023.03.23 |
---|---|
div의 Outside를 클릭할 때 div를 숨기는 방법을 잘 모르겠습니다. (0) | 2023.03.23 |
Woocommerce REST API 확장 주문 응답 (0) | 2023.03.23 |
Elixir: 키워드 목록을 지도로 변환하는 방법은? (0) | 2023.03.23 |
각각 angularjs로 된 jquery의 대체 방법은 무엇입니까? (0) | 2023.03.23 |