使用 swift 将导出的方法值作为未定义来反应本机本机模块?
Posted
技术标签:
【中文标题】使用 swift 将导出的方法值作为未定义来反应本机本机模块?【英文标题】:React native native modules with swift getting exported method value as undefined? 【发布时间】:2020-02-07 13:00:14 【问题描述】:我正在使用create-react-native-module 快速创建本机模块。之后,我遵循了 ios 设置的 react native 官方文档。 文档链接:: https://facebook.github.io/react-native/docs/native-modules-ios
我已经通过示例创建了 create-react-native-module。我只是在我的本机模块中添加返回字符串“Hello World”的简单函数。
我的'CustomModule-Bridging-Header.h'::
#import <React/RCTBridgeModule.h>
我的“CustomModule.m”::
#import <React/RCTBridgeModule.h>
@interface RCT_EXTERN_MODULE(CustomModule, NSObject)
RCT_EXTERN_METHOD(sampleMethod)
+ (BOOL) requiresMainQueueSetup
return YES;
@end
我的“CustomModule.swift”:
import Foundation
@objc(CustomModule)
class CustomModule: NSObject
@objc(sampleMethod)
func sampleMethod() -> String
return "Hello World"
对本机模块进行这些更改后,我在示例中再次安装了依赖项。现在我的 App.js 看起来像::
import React, Component from 'react';
import Platform, Text, View from 'react-native';
import CustomModule from 'react-native-custom-module';
export default class App extends Component
state =
message: '--'
;
async componentDidMount()
const msg = await CustomModule.sampleMethod();
console.log('javascript calling msg::', msg);
this.setState(
message: msg
);
render()
return (
<View>
<Text>CustomModule example☆</Text>
<Text>this.state.message</Text>
</View>
);
在这里,我得到未定义的“msg”值。请帮忙!
【问题讨论】:
嗨@Archana Sharma 当您第一次从命令行创建 react-native-module 时,您是如何解决“您需要使用 Promise 或回调来从本机函数返回值。简单地返回值是行不通的。
使用承诺的示例:
CustomModule.swift
@objc
func sampleMethod(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock)
resolve("Hello World")
CustomModule.m
RCT_EXTERN_METHOD(sampleMethod: (RCTPromiseResolveBlock)resolve rejecter: (RCTPromiseRejectBlock)reject)
【讨论】:
如何解析查询?您提到了 resolve("Hello World")。如果我有一个 HKStatisticsQuery 并且我需要在我的 JS 文件中读取它怎么办。我该如何解决这个问题???以上是关于使用 swift 将导出的方法值作为未定义来反应本机本机模块?的主要内容,如果未能解决你的问题,请参考以下文章
尝试将数据从我的 firebase 数据导出到 csv 文件给出未定义