2

iOSアプリでcoreDataを使用しています。ユーザーがデータベースにデータを追加、削除する可能性があります。デフォルトのデータ(いくつかの異なるデータセット)を配信する必要があります。現時点では、最初のアプリケーション起動までにデータベースを作成しています。csvファイルからデータを読み取り、それを使用してデータベースを作成します。csvはアプリケーションサンドボックスにあります。coreData(managedDocument)はApplicationDocument(実行時の作成...)にあります。

それは私にとって完璧に機能します-しかし私は私に尋ねます、私がアプリをAppStoreにプッシュした場合、Appleはそれを許可しますか?

4

2 に答える 2

2

このアプローチには何の問題もありませんし、それが拒否の理由になることはありません。それを行う別の方法もあります。現在の方法でデータベースを作成し、ファイルをコピーし.sqliteて、デフォルトのデータベースとして提供できます。次に、アプリの最初の実行時にコピーします。次のコードはそれを行います:

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"YourDBName.sqlite"];
    if (![fileManager fileExistsAtPath:storeURL.path]) {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBName" ofType:@"sqlite"];
        if (defaultStorePath) {
            [fileManager copyItemAtPath:defaultStorePath toPath:storeURL.path error:NULL];
        }
    }

このアプローチでは、csvファイルをバンドルに含める必要はありません。

于 2012-08-12T14:41:00.907 に答える
0

はい、アップルはデフォルトで入力されたデータベースを出荷することを許可します。これを行う標準的な方法は、バンドルにデフォルトのデータベースを出荷し、起動時にアプリケーションのドキュメントディレクトリにデータベースがあるかどうかを確認し、データベースが存在しない場合は、バンドルからドキュメントディレクトリにデータベースをコピーすることです。 。

于 2012-08-12T14:39:50.767 に答える