0

私の IOS5、Iphone アプリはデータベースを使用しており、アプリの外部でデータを入力しています。

アプリはデータベース ファイルを開いてデータを読み取るだけで、挿入や更新は行いません。

アプリはシミュレーターで正常に動作しますが、iPhone に公開するとクラッシュします。データベース ファイルがコピーされていないことが原因だと思います。

現在、ファイルはオンです

/Users/stenio123/Library/Application Support/iPhone Simulator/6.0/Applications/4B3205EB-D98B-4D65-B22A-57E5E6A93F3C/MyAppName.app/MyDatabase.data

II を使用して、コード内のロケーション パスを取得します

NSArray *documentDirectories = 
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                        NSUserDomainMask, YES);     
NSString *documentDirectory = [documentDirectories objectAtIndex:0];
documentDirectory stringByAppendingPathComponent:@"MyDatabase.data"]

これはシミュレーターで動作します。

ただし、実際の iPhone で動作するようにするには、何を変更すればよいですか?

MyDatabase.data ファイルを XCode にドラッグ アンド ドロップしてみました。「アイテムのコピー」と「ターゲットに追加」にチェックが入っていることを確認してください。次に、上記のコードを次のバリエーションに変更しました

NSString *documentDirectory = @"/MyDatabaseFolder/";

NSString *documentDirectory = @"./MyDatabaseFolder/";

NSString *documentDirectory = @"MyDatabaseFolder/";

しかし、シミュレーターでも機能しませんでした。アドバイスいただけますか?

4

1 に答える 1

1

データベース ファイルをドキュメント ディレクトリに追加するだけでなく、Xcode でプロジェクトにドラッグして、データベース ファイルをアプリケーションのバンドルに追加してみてください。そこから自由に使用でき、デバイスにコピーする必要があります。例えば:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyDatabase" ofType:@"data"];  
NSData *data = [NSData dataWithContentsOfFile:filePath];  
if (data) {

    // do something with the database data

} 
于 2013-02-03T17:40:37.413 に答える