2011-10-26 3 views
0

"Lita"を含むsqliteファイルを作成したので、 "Other Sources"フォルダのxcodeにコピーしました。ファイルをコピーする)。私はファイルがコピーされているかどうかをチェックしようとしましたが、このフォルダには何もコピーされませんでした。 :storePathにsqliteファイルをコピーする:その中に何もない(コアデータ)

my path : /Users/MyProfile/Library/Application Support/iPhone Simulator/4.3/Applications/154BC5C5-FF55-48B5-A7A0-A80496212ACB/Documents 

し、それをコピーする必要があります私のコード、または多分私は誤解何かがありますか?

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { 

    if (persistentStoreCoordinator_ != nil) { 
     return persistentStoreCoordinator_; 
    } 

    NSLog(@"my path : %@",self.applicationDocumentsDirectory); 
    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myCD.sqlite"]; 
    /* 
    Set up the store. 
    For the sake of illustration, provide a pre-populated default store. 
    */ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    // If the expected store doesn't exist, copy the default store. 
    if (![fileManager fileExistsAtPath:storePath]) { 
     NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myCD" ofType:@"sqlite"]; 
     if (defaultStorePath) { 
      NSLog(@"in if defaultStorePath"); 
      [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL]; 
     } 
    } 

したがって、iphoneシミュレータ/ 4.3/etcにsqliteファイルをコピーする必要があります。何もそこにありません...

ありがとう

+0

明らかな次のステップは、NULLを渡すのではなく、実際のNSError *をcopyItemAtPath:toPathに渡すことです。その結果、問題が発生している場所がわかります。 –

+0

@rob mayoff:ありがとう、私はエラーがない、私は私のデータベースを作成するときに問題だと思う:あなたは 'リタ 'を知っていますか?それはSQLファイルを作成する非常に簡単なソフトウェア、http://www.dehats.com/drupal/?q=node/58私はそれをインストールした、私はデータベースを作成するが、私は "。ファイル、私はリタでそれを再び開くことができません、ファイルは空のように見えます。私はテーブルを作成し、ファイルに名前を付けて拡張子を入れないと、ソフトウェアでファイルを再オープンすることはできますが、filemanagerでコピーすることはできません。 ".sqlite" ...任意のアイデア? – Paul

答えて

1

ファイルを正しくコピーしています。

ただし、コアデータで生成されたストアファイルでない場合、コアデータはストアとして使用できません。

コアデータは単純なSQLiteラッパーではなく、代わりにSQLiteストアを使用していますが、コアデータストアオプションの1つです。コアデータはストアを特定の方法で構成しなければならず、コアデータのsqliteスキーマはドキュメント化されていません。 SQLiteファイルをドロップしてコアデータストアとして使用することはできません。

データをコアデータにインポートし、コアデータでストアを作成してデータを書き込む必要があります。次に、そのファイルをアプリバンドルに含めることができます。

+0

TechZen、最後の文章を少し説明できますか? 「データをコアデータにインポートする」?プロジェクトを作成するときにsqliteファイルを直接入れることができない場合、appDelegateのコメントで質問するように、ファイルをあらかじめ入力する方法は? – Paul

+0

既存のSQLファイルがある場合は、(1)アプリケーションと同じデータモデルとクラスを使用してユーティリティプロジェクトを作成します。 (2)C APIを使用してSQLをインポートし、(3)管理対象オブジェクトにSQL派生データを取り込みます(4)管理対象オブジェクトのコンテキストを保存します。これにより、アプリケーションバンドルに追加する永続的なストアファイルが得られます。 – TechZen

+0

あなたの答えはTechZenにありがとう、私はあなたが言ったことを理解するためにいくつかのチュートリアルを検索しました。私は良いものを見つけました: 'www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data'まだ不思議だった、ユーティリティプロジェクトは何ですか? 2.what C APIについて話していますか?上のリンクはPythonを使用する方法を示していますが、C APIについて説明するリンクはありますか?最後に、私は永続的なストアを持っていると言います。私が読んだチュートリアルでは、新しい "sqlite"ファイルが完成したように見えます。永続的なストアはどういう意味ですか、それは特定のファイルですか? ?それともコード内にありますか? – Paul

関連する問題