文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

React Native保留了平台中原生的属性,所以React Native可以作为成熟的跨平台开发架构,当然也包括iOS。但是React与Swift的结合开发仍未是主流,而且在Github中,也鲜有这方面的开源库。

React Native是一个Objective-C的应用框架,使用Javascript,并在iOS的JScore中执行程序。React Native的底层是通过使用原生的组件,维护应用的展现和一些核心的功能。所以React Native在一些场合,会因为不够资源而显得力不从心。

第 1 段(可获 2 积分)

React Native APIs

React Native APIs 发送本地消息, send local notifications, however; it lacks API for processing. React Native 项目是用Objective C编写的,所以完全可以使用Swift替代,并暴露API给上层的应用。Swift看上去会与 JavaScript更相像,它们都是易于编写,和使用更少的括号。 但是,Swift也有一些弊端,例如,使用Swift编写的项目,不能转换为.xcodeproj文件,并生成 .a 文件,方便编译链接使用。它只能转换为.xcodeproj并生成 .framework 文件作为 bridging使用.

React Native项目从Objective-C到Swift的迁移

一些工具可以帮我们有效的提高迁移的效率,例如 Xcode, NodeJS, React Native 0.1.19 和 React-Native 0.19.

通过如下命令安装react-native-cli

$ npm install -g react-native-cli

并使用如下命令创建React Native 项目:

$ react-native init SwiftReactNative

现在,你就可以使用Xcode打开ios/SwiftReactNative.xcodeproj这个项目。 打开,关闭和迁移过程中,都可能需要几分钟的时间。由Objective-C编写的3个文件将会被替代:

第 2 段(可获 2 积分)
AppDelegate.h

AppDelegate.m

main.m

并创建了一个名为 AppDelegate.swift的Swift文件。当Xcode文件被添加成功后,就可以通过bridging头文件调用 Objective-C。

点击创建 Bridging头文件,并选择 Swift 开发语言。现在以下2个新的文件将会被创建:

AppDelegat.swift

SwiftReactNative-Bridging-Header.h

向SwiftReactNative-Bridging-Header.h文件中添加如下代码:

#import "RCTBridgeModule.h"

#import "RCTBridge.h"

#import "RCTEventDispatcher.h"

#import "RCTRootView.h"

#import "RCTUtils.h"

#import "RCTConvert.h"

现在打开AppDelegate.swift 并删除如下文件:

第 3 段(可获 2 积分)
AppDelegate.h

AppDelegate.m

main.m

iOS 9平台的迁移

为了迁移至最新的 iOS 9 平台, 在项目属性中,打开General – Deployment Target 并选择版本为 9.0. 通过Product- Clean删除旧的编译后的文件,并通过Product- Run从模拟器中开始运行。当应用打开后,这就意味着我们向 Swift 的迁移已经完成。

为了验证是否正确,我们可以访问通过Javascript传递给Swift的参数。为了实现一个Swfit方法,我们可以使用回调参数,并在Javascript中调用这个回调函数。

使用Swift原生代码作为Javascript的接口,我们可以在React Native中随意选择二者之一作为程序的逻辑编写语言。

第 4 段(可获 2 积分)

文章评论