1

だから私は、下部に sqlite を使用する iOS でこのアプリケーションに取り組んでいます。Core Data によって作成された .sqlite ファイルを、ユーザーが iTunes 経由でアクセスできる Documents ディレクトリに基本的にコピーするエクスポート/インポート機能を実装したいと考えています。(インポート機能は明らかに逆に機能します。)

賛否両論を聞きたいです。ユーザーが .sqlite ファイルを取得できるようにすると、データ モデルが明らかになります。企業秘密とかではないのですが、とにかく... データベースには関係がたくさんあるので、タブ区切りファイルなどにエクスポートするのは不便です。

また、インポート機能と .sqlite ファイルに問題がある可能性があることもわかりました。.sqlite が古いデータ モデルから作成された場合はどうでしょうか。ユーザーが何らかの方法で .sqlite を手動で更新したため、データ モデルが無効になった場合はどうでしょうか。インポート機能で多くの検証を行う必要があると思います。

助言がありますか?

4

2 に答える 2

2

データ モデルについて心配する必要はありません。それがどのようなものか知りたい人は、とにかく調べることができます。iExplorerのようなアプリを使用すると、電話をジェイルブレイクする必要なく、アプリに関するあらゆる種類のことを見つけることができます。これには、iTunes では利用できない SQLite ファイルや Core Data モデル ファイル自体が含まれます。データ モデルの詳細は、すでに安全ではありません。

異なるバージョンについては、Core Data には、バージョンの競合を検出する移行システムが含まれており、データ ストアを最新バージョンに更新するためのさまざまな移行オプションを提供します。モデルを更新するときにモデルの移行技術を使用している限り、ユーザーが古いバージョンをコピーしても問題はありません。ユーザーが新しいバージョンにアップグレードしたかのように移行してしまうだけです。アプリのバージョン。

于 2013-02-23T17:51:26.937 に答える
0

raywanderlich.comの記事をフォローしましたが、インポートとエクスポートに電子メールを使用しています。

実際には、.sqlite ファイルを圧縮し、ファイルの拡張子を .abc に変更してエクスポートを実装しました (アプリ固有の拡張子を使用してください)。このようにすると、ユーザーは拡張子を知らないため、このファイルを編集して破損する可能性は低くなります。インポートのために、ファイルを解凍して既存のモデルを置き換えるだけです。ここで、既存のデータをインポートしたファイルに置き換えるだけであることに注意してください。1つのアプリで使用しました。そして、苦情はありません。拡張子が不明な場合、編集する人はほとんどいません。

古いデータモデルに関しては、コアデータの移行を処理したことがある場合は、古いモデルを新しいモデルに移行する必要があります。

インポート中のファイルの検証に関して、.sqlite ファイルを検証できないと思いますか? 検証するには、.sqlite ファイルを開いて読み取る必要があり、それを読み取るには、スキーマと一致する必要があります。破損している場合は一致せず、アプリがクラッシュします。できることは、例外をキャッチしてエラー メッセージをスローすることだけです。

別の方法

  1. .sqlite ファイルの名前を .db のような名前に変更して、ユーザーが .sqlite ビューアーでファイルを開こうとしないようにします。
  2. xml または json としてエクスポートします。このようにして、インポート ファイルを検証することができます。インポート中に既存のデータを置き換えるだけでない場合は、簡単に検証できます。

長所 1. 簡単な方法。zip ライブラリや、xml や json との間で変換するための追加のメソッドは必要ありません。

短所

  1. また、インポート中に既存のデータを置き換えるだけでなく、多くのことを行う必要があります。この .sqlite から別のエンティティにすべてのエンティティをコピーする必要があります。その場合、データをjsonにエクスポートして、ファイル拡張子の名前を変更するだけです。インポート中に、json を解析し、管理対象オブジェクト コンテキストを作成/更新するだけです。この json の場合、各レコードを一意に識別するために UUID を作成します。

コア データで生成された .sqlite は通常の .sqlite ファイルではないため、ユーザーが sqllite ビューアーでこれを開こうとすると、驚くことがあります。

ファイルがアプリから消えると。それがどのように使用されているかを制御することはできません。ユーザーが破損したファイルをインポートした場合、エラー メッセージを表示するだけです。

お役に立てれば。

于 2013-02-23T17:49:32.083 に答える