2017-02-28 9 views
0

私は今レルムを発見しました。私は、iOSアプリ、Macアプリ、バックエンドがあるアーキテクチャ設計を考えています。 iOSアプリケーションには、バックエンドの領域に接続された領域(Realm Mobile Platform)があります。 iOSアプリに別のレルム(レルムモバイルデータベース)があります。バックエンドには、ファイルを格納するデータベースがあります。2つの領域を持つことはできますか?

ここに私が考えているものがあります。

iOSアプリは、サードパーティAPIからJSONを取得し、それを解析し、それをRealm(バックエンドに接続されているもの)のものと比較します。レルムにないものは、Macアプリケーションに送信されます。Macアプリケーションは、外部ソースから対応するファイルをダウンロードし、それらのファイルをデータベースにアップロードします。その後、Mac AppはiOSアプリにアラートを出し、そのアプリをRealm(バックエンドに接続されているもの)に配置します。これは「バックエンドの更新」プロセスです。

ここで、iOSアプリケーションは両方のレルムを一緒に比較し、ローカルレルムにないものを取得します。次に、それらのレルムオブジェクト内のリンクを使用してデータベースからファイルをダウンロードします。ダウンロードされると、それらのオブジェクトがローカルのRealmストアに追加されます。これは「バックエンドとのデバイスの同期」プロセスです。

両方のレルムは、同じ種類のオブジェクトを格納します。エクストラ

理想的には、デバイスがデータベースと完全に同期する必要がない、そしてその最も可能性の高いバックエンドのレルムおよびデータベースファイルのサブセットを持つことになります。

1つのレルムプラットフォームと1つのレルムデータベースの組み合わせが可能ですか?

+0

iOSアプリ、Macアプリ、バックエンド間で同じ領域を共有するだけの理由はありますか? – ast

+0

こんにちは@ast、それは持っていないことを知ることができるようにデルタを保つので、ダウンロードするものが分かっています。 –

+0

ファイルがダウンロードされたかどうかを追跡するためにオブジェクトにプロパティを追加してから、Realmが同期を処理するようにすることは考えられますか?オーバーヘッドを大幅に削減する必要があります。 – ast

答えて

0

それは可能なはずです。アプリ内には、同期されたレルムと同期していないレルムの両方を持つことができます。それらをインスタンス化するために使用するConfigurationオブジェクトを調整する必要があります。

それはレルムを別のレルムからオブジェクトを簡単にコピーすることも可能です:

let objectFromLocalRealm = //... 
let synchronizedRealm = //... 

try! synchronizedRealm.write { 
    sychronizedRealm.create(*objectType*.self, value: objectFromLocalRealm, update: true) 
} 

あなたがが、このメソッドを使用する場合は、両方のオブジェクト自体、および任意の子オブジェクトList秒またはそれ以外の場合は確認する必要があります主キーを持っているか、同期レルム内の同じオブジェクトの複数のコピーで終わることがあります。

レルムのテストでは、2つのObjectインスタンスがデータベースの同じバッキング行を指しているかどうかを調べるため、異なるレルムの2つのオブジェクトを比較すると自動的には機能しない可能性があります。特定のプロパティ値が一致するかどうかを確認する手動比較メソッドを実装する必要があるかもしれません。

+0

ありがとうTim!私は昨日YouTubeであなたのRealmの会話を見ていたので、あなたからの返事を得るのはかなり現実的です。歓声メイト! –

+0

ちょっとピーター!ハハハは本当ですか?それはどのビデオでしたか?クール!私が助けてくれるのがうれしい!あなたのアプリの残りの部分と幸運! :) – TiM

+0

ありがとうございましたTim :)これは1つでした:https://www.youtube.com/watch?v=QmoOuS1nXh8たくさんの笑いがあります!本当に素晴らしいプレゼンテーション。そして今、私はRealmを使うのが大好きです。それは邪悪だ。 –

関連する問題