【问题标题】:Exception: addEvent is not a recognised Objective C method例外:addEvent 不是公认的 Objective C 方法
【发布时间】:2023-04-03 12:24:02
【问题描述】:

我正在将 swift 类移植到 ReactNative。

我的 CalendarManager.Swift 类

CalendarManager.Swift

 import Foundation;


import UIKit;
// CalendarManager.swift

@objc(CalendarManager)
class CalendarManager: NSObject {

  @objc
  func addEvent(_name: String, location: String, date: NSNumber) -> Void {
    // Date is ready to use!

      NSLog("%@ %@ %S", _name, location, date);
   // self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
  }

}

我的目标 C 类

日历管理器.m

#import <Foundation/Foundation.h>

#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(CalendarManager , NSObject)

RCT_EXTERN_METHOD(addEvent: (NSString *)name location:(NSString *)location date:(NSNumber *)date)

@end

SwiftBridge-header

#import <React/RCTBridgeModule.h>

请告诉我如何减少以下错误。

【问题讨论】:

  • 尝试将函数更新为@objc func addEvent(_name: String, location location: String, date date: NSNumber) -&gt; Void
  • 山姆错误。你能检查一下吗
  • _ name中应该有空格,请尝试,@objc func addEvent(_ name: String

标签: ios objective-c swift react-native react-native-bridge


【解决方案1】:

尝试提供Objective-C的方法描述

你的朋友:

@objc
  func addEvent(_name: String, location: String, date: NSNumber)...

尝试将其更改为:

@objc(addEvent:::)
  func addEvent(name: String, location: String, date: NSNumber)...

这里,':'代表一个参数,因为函数接收的是3,所以会有3个冒号,或者你也可以传递变量名,虽然这无关紧要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2023-01-10
    • 2014-10-29
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多