2

満足のいく答えが見つかりませんでした。データをデータベースに挿入でき、シミュレーターで選択することもできますが、シミュレーターを閉じて再度開くと、データが表示されません。また、端末で開いたところ、データが表示されませんでした。行を見逃していませんか、それとも論理エラーがありますか?

何を試しましたか?私に提案はありますか?

コードにデータを挿入すると、次のようになります。

databasePath = [[NSBundle mainBundle] pathForResource:@"persons" ofType:@"sqlite3"];
        const char *dbpath = [databasePath UTF8String];
        sqlite3_stmt    *statement;

        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
            NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO person (id, name, address, photograph, telephone, fax, district) VALUES (\"%i\",\"%@\", \"%@\", \"%@\",\"%@\",\"%@\",\"%@\")", i, Name,Addresses, Image, Telephone,Fax,District];

            const char *query_stmt = [insertSQL UTF8String];

            sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);

            if (sqlite3_step(statement) == SQLITE_DONE)
            {
                //  NSLog(@"OK");

            } else {
                //  NSLog(@"Problem!!!");

            }
            sqlite3_finalize(statement);
            sqlite3_close(contactDB); 
        }
4

2 に答える 2

1

私も立ち往生していたので同じ答えを探していましたが、他の誰かの投稿がかなり良い例を示していると思います。

Inafzigerが提供したリンクに関する情報は次のとおりです。

iOS データ ストレージのガイドライン iCloud には、Wi-Fi 経由でユーザーの iOS デバイスを毎日自動的にバックアップするバックアップが含まれています。アプリケーション バンドル自体、キャッシュ ディレクトリ、および一時ディレクトリを除いて、アプリのホーム ディレクトリ内のすべてがバックアップされます。購入した音楽、アプリ、書籍、カメラ ロール、デバイスの設定、ホーム画面とアプリの構成、メッセージ、着信音もバックアップされます。バックアップはワイヤレスで行われ、ユーザーごとに iCloud に保存されるため、アプリ用に保存するデータの量を最小限に抑えることをお勧めします。ファイルが大きいと、バックアップの実行にかかる時間が長くなり、ユーザーの使用可能な iCloud ストレージをより多く消費します。

バックアップが可能な限り効率的になるように、次のガイドラインに従ってアプリのデータを保存してください。

  1. /Documents ディレクトリに保存する必要があるのは、ユーザーが生成した、またはアプリケーションで再作成できないドキュメントやその他のデータのみであり、iCloud によって自動的にバックアップされます。
  2. 再ダウンロードまたは再生成できるデータは、/Library/Caches ディレクトリに保存する必要があります。Caches ディレクトリに配置する必要があるファイルの例には、データベース キャッシュ ファイルやダウンロード可能なコンテンツ (雑誌、新聞、地図アプリケーションで使用されるものなど) が含まれます。
  3. 一時的にのみ使用されるデータは、/tmp ディレクトリに格納する必要があります。これらのファイルは iCloud にバックアップされませんが、ユーザーのデバイスのスペースを消費し続けないように、作業が終了したらこれらのファイルを削除することを忘れないでください。
  4. ストレージが少ない状況でも、デバイスに残す必要があるファイルを指定するには、「バックアップしない」属性を使用します。この属性は、再作成できるが、アプリが適切に機能するために、または顧客がオフラインで使用できることを期待しているために、ストレージが少ない状況でも保持する必要があるデータで使用します。この属性は、Documents ディレクトリを含め、ファイルがどのディレクトリにあるかに関係なく、マークされたファイルに対して機能します。これらのファイルは削除されず、ユーザーの iCloud または iTunes バックアップには含まれません。これらのファイルはデバイス上のストレージ領域を使用するため、アプリはこれらのファイルを定期的に監視および削除する必要があります。
于 2013-08-15T06:26:49.550 に答える
1

メイン バンドルは読み取り専用であるため、データベースを変更することはできません。

まず、ユーザー ドキュメントやキャッシュ ディレクトリなど、書き込み可能な場所にコピーする必要があります。

iOSのデータ ストレージ ガイドラインでは、データの種類に応じて、データを保存する場所が指定されています。

于 2012-06-23T15:57:43.933 に答える