2011-07-14 15 views
0

似たような質問がたくさんありますが、それらを通って私の質問に答えが見つかりません。iPhone用のアプリケーションのSQLiteデータベースの更新

iPhone用のアプリケーションでは、sqliteデータベースを使用しています。アプリを更新する必要があり、すべてがうまくいった。 iPhoneにアプリをインストールするとうまくいきますが、一部のデバイスに既にインストールされているアプリを更新すると、アプリが削除されてアプリが再インストールされるまで古いデータベースと機能が混ざり合いました。

デバイス上のデータをチェックするための私のコードは次のとおりです。

/* 
This method checks is rawdata has been copied to Documents directory. 
If not, copies and returns YES, to start conversion. 
Else, if already copied, reply NO. 
*/ 
- (void) checkImportIsNeededFrom: (NSString*) bundledRawFilePath toDestination:(NSString*) documentSavedRawFilePath 
{ 
    NSLog(@"Checking rawdata file into Documents folder.."); 
    if ([[NSFileManager defaultManager] fileExistsAtPath:documentSavedRawFilePath]) { 
     importIsNeeded = NO; // SET YES TO FORCE IMPORT ON EACH STARTUP 
     NSLog(@"copy already existing in %@", documentSavedRawFilePath); 
    } else { 
     [[NSFileManager defaultManager] copyItemAtPath:bundledRawFilePath toPath:documentSavedRawFilePath error:NULL]; 
     importIsNeeded = YES; 
     NSLog(@"copy %@ to %@ done...", bundledRawFilePath, documentSavedRawFilePath); 
    } 
} 

- (BOOL) importIsNeeded { 
    return importIsNeeded; 
} 

だから、僕は、デバイス上の古いものを削除するといくつかの助けを必要とし、新しいものと交換してください。簡単な解決法はありますか?

ありがとうございました。

答えて

0

コードでは、デバイス上に既にDaabaseが存在するかどうかだけチェックします。新しいものか古いものかをチェックしません。

アプリをアップグレードすると、以前のデータベースがそのまま残るため、importIsNeededNOに設定されます。私はアプリケーションが新しいものとクラッシュのようにデータベースを使用しようとしていると思いますか?

を確認する必要があります。データベースは、存在する場合のみではありません。

+0

はい、データベースファイルの名前を変更するたびにインポートが開始されます。だから、それは何とかsqliteデータベースの名前に接続されています。しかし、私の問題は、アプリケーションが古いデータベースを削除する別の名前を参照しているときです。私はiOSで初心者なので、あなたが私を理解すればわからない。 – Akosha

関連する問題