2009-07-13 14 views
5

私は2つのアプリケーションを作成しようとしています.1つは永続ストアを構築し、もう1つは永続ストアを作成しています。iPhone CoreDataファイルをあるプロジェクトから別のプロジェクトにコピーする

これまでのところ、CoreDataを使用してXMLファイルからデータベースを構築するアプリケーションを1つ作成しました。このプロジェクトには、データモデル、エンティティの.h/.mファイルなどが含まれています。

私は現在、2番目のアプリケーションが.sqliteファイルを読み取るようにしようとしています。エンティティに関連するh/.mファイルとそのプロジェクトへのsqliteファイル(既存の追加を介して)。

コードは実行されますが、データベース内のオブジェクトを常に見つけることができません。

これらのファイルをコピーしようとすると、制限や正しい手順がありますか?

答えて

3

ここの解決法は信じられないほど簡単です。

あなたの.xcdatamodelファイルをあるプロジェクトから別のプロジェクトにコピーするだけで、シミュレータでアプリを初めて実行すると、アプリケーションのDocumentsフォルダが作成されます。保存した.sqliteまたは.binaryファイルを、デバイスのyourApp/Documentsディレクトリにドロップします。 "〜user/Library/Application Support/iPhone Simulator"にシミュレータディレクトリがあります。

プロビジョニングされたiPhone上でmyAppディレクトリをドラッグアンドドロップすることで、オーガナイザの内外にmyAppディレクトリをダウンロード、編集、アップロードすることもできます。アプリケーションリストを見てください。

iPhoneはコアデータを持つxmlストアをサポートしておらず、sqliteまたはアトミック(バイナリ)のみサポートしています。実行時にすべてをメモリにロードする必要はないため、sqliteストアはほとんどのアプリケーションにとってはるかに優れたオプションです。

これはあなたの意義ですか?

+0

ありがとう!あるプロジェクトから.xcdatamodeldパッケージを(別の名前で)別のプロジェクトにコピーしました。私はファイルとその中の '.xcdatamodel'ファイル(パッケージの内容を表示する)のファイル名を他のプロジェクトの名前と一致するように変更しました。恐ろしい原因は、それはすべて私にとってバイナリです。ファイルを比較する方法がいくつかあるといいですね。うまくいけば、ファイルにプロジェクト固有のもの(プロジェクト名など)が含まれていないことを期待しています。コアデータスタックを設定するコードが新しい名前を使用していることを確認してください。また、再度実行する前にアプリを削除して、SQLliteファイルを再作成することもできます。 – ma11hew28

0

私はあなたが同じことにアプリケーションバンドル名を設定した場合、デバイスは、彼らが同じアプリケーションだと思うだろうので(ない100パーセント確か)アプリのplistの中で、彼らは資源を共有すると思う...

0

私はこれがあなたが望むように動作するとは思わない。 iPhoneでは、各アプリケーションは独自の「サンドボックス」で動作し、あるアプリケーションが別のアプリケーションが読むことができるファイルを書くことは本当に不可能です。

+1

しかし、彼らが同じバンドルパスを持っていれば、彼らはリソースを共有します – Daniel

+1

しかし、彼らは同じアプリケーションとみなされます – Daniel

+0

実際には、私は元の投稿でもっとはっきりしていたはずです。私がやろうとしているのは、シミュレータで1つのアプリケーションを実行して、たくさんのXMLファイルの中からデータベース(永続ストア)を作成することです。次に、データモデル+データベースとエンティティ関連の.m/.hファイルを、ほとんどの場合そのデータベースを読み取る実際のアプリケーションにコピーします。だから実際のデバイスでは、私はちょうど2番目のアプリの中で働いています。それは理にかなっていますか? 助けてくれてありがとう! – rhess

0

実際には2つの異なるプロジェクトですか、同じプロジェクトの2つのターゲットですか?それははるかに理にかなっているように見えますし、エンティティオブジェクトが変化すると共有できます。

+0

現在、私は本当に2つの異なるプロジェクトとしてそれらを持っています。 1つはXMLからエンティティを永続SQLiteストアにロードする 'データストアクリエイター'で、もう1つは実際のアプリです。 – rhess

0

1つのプロジェクトから別のプロジェクトにコアデータファイルをコピーする場合は、最初にコアデータをサポートする新しいプロジェクトを作成してから、以前のcoredataファイルの内容を開き、ルートタグを除いて、新しいプロジェクトのデータファイル。 Previousy私は、新しいプロジェクトでcoredataファイルを削除しようとしましたが、前のコピーを貼り付けて名前を変更しても動作しませんでした。

関連する問題