如何将iOS反应本机模板转换为swift?

Posted

技术标签:

【中文标题】如何将iOS反应本机模板转换为swift?【英文标题】:How to convert iOS react native template to swift? 【发布时间】:2018-01-09 12:09:46 【问题描述】:

我一直在阅读有关 react native 并决定尝试一下,我在 Swift 方面相当有经验,但从未尝试过 Objective c,所以我想将模板项目转换为使用 AppDelegate.swift

我在这个已接受的答案中遵循了解决方案:React Native app purely in Swift,但我在运行项目时只有一个黑屏

有谁知道如何将模板转换为 Swift?我可以直接从 React Native 调用 swift 代码而不需要任何桥头吗?

我正在运行 React Native 0.52 顺便说一句

【问题讨论】:

【参考方案1】:

所以经过几次尝试,我发现了如何使它与 React Native 0.52 一起工作

1 - 删除 AppDelegate.m、AppDelegate.h 和 main.m

2 - 创建一个新的 AppDelegate.swift,当它询问您是否要创建一个 Objective-C 桥头时,只需说“是”

3 - 将以下内容复制到您的 Bridging-Header.h 文件中:

#import <React/RCTBridgeModule.h>
#import <React/RCTBridge.h>
#import <React/RCTEventDispatcher.h>
#import <React/RCTRootView.h>
#import <React/RCTUtils.h>
#import <React/RCTConvert.h>
#import <React/RCTBundleURLProvider.h>

4 - 在您的 AppDelegate.swift 文件中使用以下代码并编辑项目名称:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 
  var window: UIWindow?
  var bridge: RCTBridge!

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    let jsCodeLocation: URL

    jsCodeLocation = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource:nil)
    let rootView = RCTRootView(bundleURL: jsCodeLocation, moduleName: "YOUR-PROJECT-NAME", initialProperties: nil, launchOptions: launchOptions)
    let rootViewController = UIViewController()
    rootViewController.view = rootView

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = rootViewController
    self.window?.makeKeyAndVisible()

    return true
  

5 - 不要忘记将“YOUR-PROJECT-NAME”替换为您的实际项目名称

6 - 快跑!快乐编码:)

【讨论】:

太棒了!工作正常! @Steve 你能告诉我如何在 Bridging-Header.h 文件中导入第三方库

以上是关于如何将iOS反应本机模板转换为swift?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值传递给正在加载反应本机应用程序的 Web 视图

如何使用本机反应为 IOS 选择键盘类型

如何将 Intl.NumberFormat 与本机反应一起使用?

在本机反应中将图像转换为base64

如何在本机反应中保存对本机日历(Android和iOS)的条目?

在将应用程序从 swift 迁移到本机反应后,是不是可以在应用程序中检索用户令牌?