編集:シミュレーターでも動作しているようには見えません。
いくつかの詳細情報、機能したアーカイブバージョンをインストールしてから、機能しないバージョンをその上にインストールすると、すべてがうまく機能するようです。しかし、アーカイブされたバージョンを削除して新しいバージョンをインストールすると、すべてが機能しなくなります。
iPhone でアプリをテストしていたところ、完全に機能していました。アーカイブして ipa を電話にインストールすると、データベースが機能しなくなりました。データベースをロードしてもエラーは発生せず、前にも言ったように、ちょうど機能していました。私はコードを変更しませんでした。シミュレーターではまだ機能するので、データベースのコピーに関係していることはわかっています。関連するコードは次のとおりです。
dbPath=[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()];
// Get the documents directory
NSFileManager *fmngr = [[NSFileManager alloc] init];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"database.sql" ofType:nil];
NSError *error;
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"])
{
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
[fmngr removeItemAtPath:[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()] error:&error];
if(![fmngr copyItemAtPath:filePath toPath:[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()] error:&error])
{
// handle the error
NSLog(@"Error creating the database: %@", [error description]);
}
}
データベースのクエリに FMDB を使用しているため、クエリは次のようになります。ユーザーが検索ボタンを押したときに呼び出される別のメソッドにあります。
FMResultSet *s = [db executeQueryWithFormat:@"SELECT Gurmukhi, ShabadID, FirstLetterStr FROM Shabad WHERE FirstLetterStr LIKE %@", searchString];
また、ipaを解凍して、データベースが空でないかどうかを確認しましたが、そうではありません。何が起こっているのかわかりません。