2017-10-27 4 views
0

React Nativeを使用することを検討しています。楽しみのために、チェックし、可能性をよりよく理解するために、私たちはReact Nativeとその環境が私たちの要件を満たすことができると確信しています。SwiftとReact Nativeから同一の永続ストアにアクセスする

この質問では、データの永続化とアクセスについて具体的に質問したいと思います。

私たちのアプリでは、オフラインでの作業に焦点を当てています。これは、私たちの最も重要なポイントの1つです。 iOSでは、これを実現する方法をいくつか考えています。コアデータ、レルム...しかし、私たちがReact Nativeとしてアプリケーションの一部を実装する場合、保存されたデータにアクセスしたり、変更して永続的なストアに保存したりするためにもこれらの部品が必要になります。
これを達成できますか? 1つの永続ストア(SQLite、Realm、その他のもの)を持ち、SwiftコードとReact Nativeの両方からアクセスできます。

+0

CoreDataのようなネイティブライブラリにアクセスするためにいくつかのラッパーを書く必要があると思います。いくつかのドキュメント[here](https://facebook.github.io/react-native/docs/communication-ios.html)を参照してください。 – Cristik

答えて

2

これは、ネイティブモジュールを搭載したiOSとAndroidの両方でReact Nativeを使用すると非常に簡単です。あなたに

//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 

が反応ネイティブコード:

import { 
    NativeModules 
} from 'react-native'; 

const NativeDataStore = NativeModules.MyDataStore; // must match the RCT_EXPORT_MODULE name 

NativeDataStore.getMyData() 
    .then(data => { 
     // do some stuff 
    }) 
をあなたはスウィフト/ OBJの-Cでの簡単なネイティブモジュールを構築し、自分の永続ストアを公開します

ネイティブモジュールとSwiftサポートの詳細については、こちらのドキュメントをご覧ください:https://facebook.github.io/react-native/docs/native-modules-ios.html#exporting-swift

関連する問題