2009-06-10 3 views
7

コアデータを使用してモデルを保持するiPhone 3.0アプリケーションを作成しています。アプリケーションをデフォルトのデータセットでインストールしたいのですが。 iPhone < 3.0用に開発する場合、SQLスクリプトを使用してデータベースを初期化してからビルドを実行し、準備された.sqliteファイルをアプリケーションリソースとしてデプロイしました。コアデータの最適なアプローチは何ですか?コアデータベースiPhoneアプリケーションのデフォルトデータセット

結論:最後に、汎用XMLハンドラを作成しました。要素名は、Objective-Cクラス名とプロパティ名にマップされます。要素内のPCDATA値は、要素によって指定されたプロパティで宣言された型に変換されました。子要素またはプロパティ要素はオブジェクトインスタンスに解決されました。したがって、XML文書の解析によってオブジェクトグラフが作成されました。私は最初のObjective-Cランタイムとグリップを取得しなければならなかった:-)

例のターゲットクラスかかわら:心に

<data> 
    <Sprocket id="sprocket-1"> 
     <name>Sprocket1</name> 
     <wheels>4</wheels> 
    </Sprocket> 
    <Widget id="widget-1"> 
     <name>MyWidget</name> 
     <sprockets> 
      <Sprocket ref-id="sprocket-1"/> 
      <Sprocket id="sprocket-2"> 
       <name>Sprocket2</name> 
       <canFly/> 
      </Sprocket> 
      <Sprocket id="sprocket-3"> 
       <name>Sprocket3</name> 
      </Sprocket> 
     </sprockets> 
    </Widget> 
</data> 
+3

私はplistsから実行された最初のアプリケーションでcoredataデータベースにデータを設定していました。その結果、最初の実行時間が非常に長くなりました。人々が「アプリケーションバンドルで生成した事前入力済みの.sqliteデータベースを使用する」と言い続けています。 CoreDataブックの例では、見つけたら.sqliteファイルを使用する方法を示しますが、最初はどこにありますか?私はここで答えを見つけた:http://ablogontech.wordpress.com/2009/07/13/using-a-pre-populated-sqlite-database-with-core-data-on-iphone-os-3-0/ – Prairiedogg

答えて

6

つのオプションスプリング:

@interface Widget : NSObject { 
@private 
    NSString* name; 
    NSSet* sprockets; 
} 
@property (nonatomic, retain) NSString* name; 
@property (nonatomic, retain) NSSet* sprockets; 
- (void)addSprocketsObject:(Sprocket*)value;  
@end 

@interface Sprocket : NSObject { 
@private 
    NSString* name; 
    NSNumber* canFly; 
    NSNumber* wheels; 
} 
@property (nonatomic, retain) NSString* name; 
@property (nonatomic, retain) NSNumber* canFly; 
@property (nonatomic, retain) NSNumber* wheels; 
@end 

例のデフォルトのデータ

  1. 妥当なデータ形式(XML、JSONなど)のインポーターを作成し、最初にコアデータコンテキストにインポートしますコンテキストを永続ストアに保存します。
  2. アプリケーションに永続ストアが1つだけ必要な場合は、あらかじめ入力しておき、アプリケーションのリソースを使用して永続ストアを展開できます。複数の永続ストアがすべて同じデフォルトデータで事前に設定されている場合、オプション1はおそらくより簡単になりますが、NSPersistenStoreCoordinatorのmigratePersistentStore:toURL:options:withType:error:(またはこれに相当するiPhone Core Data - - まだNDAの下にある)、新しい店舗が必要な店舗ごとに、店舗から新しい店舗を作成します。

私の経験では、オプション1を実装するコードは、永続的なストアをあらかじめ準備するのに必要なものとほぼ同じコードなので、実際には2つの視点を持つオプションは1つだけです。

4

Plistを使用して最初のデータを格納し、最初の実行時に永続ストアにデータを格納できます。この方法は、独自のカスタムXMLパーサーを作成するよりも簡単です。

関連する問題