首页 文章

从Swift和React Native访问同一个持久性存储

提问于
浏览
1

我们正在考虑将React Native用于我们的一个屏幕 - 为了好玩,检查它并更好地掌握可能性,但即使在开始之前我需要一些答案,所以我们确定React Native及其环境可以符合我们的要求 .

在这个问题中,我想特别询问有关持久数据和访问数据的问题 .

在我们的应用程序中,我们专注于离线体验,因为它还需要这些部分来访问存储的数据,甚至修改它并保存到持久性存储 .
Can this be achieved? Having one persistent store (SQLite, Realm, something else?) and access it from both Swift code and React Native.

1 回答

  • 3

    使用Native Module在iOS和Android中使用React Native非常容易 .

    您将在Swift / Obj-C中构建一个简单的本机模块并公开您的持久存储:

    //RCTMyDataStore.h
    
    #import <Foundation/Foundation.h>
    #import <React/RCTBridgeModule.h>
    #import <React/RCTEventEmitter.h>
    
    @interface RCTMyDataStore : RCTEventEmitter <RCTBridgeModule>
    
    @end
    

    //  RCTMyDataStore.m
    
    #import "RCTMyDataStore.h"
    
    @implementation RCTMyDataStore {
    }
    
    RCT_EXPORT_MODULE(MyDataStore);
    
    RCT_REMAP_METHOD(getMyData,
                     getMyData_resolver:(RCTPromiseResolveBlock)resolve
                     getMyData_rejecter:(RCTPromiseRejectBlock)reject)
    {
        // get data from my persistent store
    
        if (success) {
            // convert to RN passable format (NSDictionary or NSArray)
    
            resolve(myData);
        } else {
            reject(@"404", @"No data", nil);
        }
    
    }
    
    
    @end
    

    在您的React Native代码中:

    import { 
        NativeModules
    } from 'react-native';
    
    const NativeDataStore = NativeModules.MyDataStore; // must match the RCT_EXPORT_MODULE name
    
    NativeDataStore.getMyData()
        .then(data => {
            // do some stuff
        })
    

    有关Native Modules和Swift支持的更多信息,您可以在这里查看文档:https://facebook.github.io/react-native/docs/native-modules-ios.html#exporting-swift

相关问题