Swift中的React-native iOS桥接模块

时间:2019-05-05 13:07:03

标签: ios swift react-native npm

我想创建一个本机模块以便在我的react-native项目中使用它。特殊之处在于我想使用Swift语言。

因此,我使用 react-native init 命令创建了一个新的RN项目。

这是我的软件包依赖项:

  • RN(0.59.5)
  • 反应(16.8.3)

我在 node_modules 目录中创建了一个名为react-native-hello-world的目录,以便1)通过简单的示例进行训练2)模拟我将来的Npm软件包。

在此目录中,我创建了HelloWorld.xcodeproj。

-- nodes_modules
   -- react-native-hello-world
      -- ios/
         -- HelloWorld/
            -- HelloWorld.xcodeproj
            -- HelloWorld/
               -- HelloWorld.swift
               -- HelloWorld-Bridging-Header.h

正如我提到的,我想使用Swift创建这个模块。因此,正如RN文档所述,我使用XCode创建了桥接头文件。

那是我的问题开始的时间...当我添加

#import <React/RCTBridgeModule.h>

在我的HelloWorld-Bridging-Header.h文件中发生错误,并说没有找到'React / RCTBridgeModule.h'文件

我试图清理我的项目,甚至删除我的派生数据,但仍然出现此错误。

我什至在目标的标头搜索路径中添加了React的.h文件。

$(SRCROOT)/../../../react-native/React  //recursive

但是我仍然有这个错误……我不明白为什么我认为我做了我必须做的所有事情。所以也许我们不能使用Swift创建本机模块?

有人可以告诉我我是否犯了一个错误或者他们是否已经设法告诉我该怎么做?

我们将不胜感激,

谢谢:)

1 个答案:

答案 0 :(得分:1)

如果您只有对等依赖性,然后尝试打开 HelloWorld.xcodeproj (据我了解,这是您的模块),它将无法正常工作,因为您没有将node_modules放入custom_module文件夹。

  1. a)将此模块添加到您的主项目 package.json

    “依赖项”:{     “ react-native-hello-world”:“文件:custom_modules / RNHelloWorld”,     ...     }

  2. npm install

  3. 打开您的 PROJECT_NAME / ios / PROJECT_NAME.xcodeproj

  4. 您可以看到您的RNHelloWorld已添加到您的

  5. 您可以在此处开始使用自定义模块,并且 RCTBridgeModule 的错误将消失,因为您已将 libReact.a 放入了链接库二进制文件