我正在尝试使用Swift为React Native设置本机iOS模块。
这是我的Swift文件:
// SwiftManager.swift
import Foundation
@objc(SwitchManager)
class SwitchManager: NSObject {
@objc func addEvent(_ name: String) -> Void {
NSLog("It works!")
}
}
这是我的实施文件:
// SwiftManager.m
#import <React/RCTBridgeModule.h>
@interface RCT_EXTERN_MODULE(SwitchManager, NSObject)
RCT_EXTERN_METHOD(addEvent:(NSString *)name)
@end
然后,我尝试在我的React Native代码中使用它,如下所示:
// index.ios.js
import React, { Component } from 'react';
import { NativeModules } from 'react-native';
const SwitchManager = NativeModules.SwitchManager;
SwitchManager.addEvent('Birthday Party');
// ...
但SwitchManager
最终未被定义。在我组建的另一个项目中,我已经成功创建了一个本机模块,我不记得做了什么不同的事情。您对RN为什么不拿起这个原生模块有任何想法吗?
答案 0 :(得分:1)
我将所有更改还原到我的repo的干净版本,并在Xcode中再次从头开始创建文件。 React Native现在能够获取本机模块。我认为这个问题可能与重命名事件和Xcode没有正确保存引用有关,虽然我无法肯定地说,因为我的工作树中有几处更改。