1

アプリで使用する必要のあるデータベース(SQLite)をダウンロードしようとしています。NSDataとして提供されるダウンロードデータを保存する前に、ダウンロードデータがSQLiteデータベースであるかどうかを確認したいと思います。どうすれば確認できますか。

例えば:

データベースの正しいURLlはhttp://example.com/mydatabase.dbです。

どういうわけかURLがhttp://example.com/mydatabase.bdxと入力された場合、これは存在しませんが、NSDataでデータを受信します。

NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://example.com/mydatabase.db"]];

ファイルを保存して開こうとした後、確かに確認できますが、開かない場合は問題があります。ただし、正しいデータがダウンロードされない場合は、ファイルを保存せずにNSDataをチェックインしたいと思います。

保存せずに確認するにはどうすればよいですか?

4

2 に答える 2

1

以下のコードは、拡張子を確認するのに役立ちます。

NSString *url = @"http://example.com/mydatabase.bdx";
if([url hasSuffix:@".db"])
NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
于 2012-04-19T11:49:30.900 に答える
1

sqlite3インターフェースのドキュメントを見ると、私が見つけることができるのはsqlite3_open()、データのチャンクではなくファイル名を受け取る友人だけです。

したがって、独自のカスタムsqlite3ライブラリを出荷する以外に、ダウンロードNSDataしたものを説明どおりに保存する必要があると思います。一時的な場所にダンプしてから、開いてみてください(おそらく、を使用しますが、 FMDBsqlite3_open()を使用していることを願っています)。または同様の)、それが失敗した場合は、データが無効であると結論付けます。

于 2012-04-19T11:58:53.593 に答える