2012-04-19 17 views
1

私はアプリケーションで使用する必要があるデータベース(SQLite)をダウンロードしようとしています。ダウンロードしたデータをNSDataとして保存する前に、ダウンロードしたデータがSQLiteデータベースであるかどうか確認したいと思います。どうすれば確認できますか?例えば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をチェックインしたいと思います。

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

+1

は、isEqualToStringを使用してURL文字列を比較します。 –

+0

正しいURLまたは不正なURLだけではありません。なぜなら、ある日のデータベース名が変更されたとしても、それでもNSDataには何かが届くからです。私はそれがsqlite dbの場合、正しいファイル "mydatabase.db"またはNSDataの内容を確認したいです。 – Anand

+0

を参照してください。ファイル名が正しいかどうか確認してください。比較のための基礎があるはずです。 eg.do uファイルの拡張子をチェックしたいのですが(.db->正しいOR .bdx->間違っていますか?)あなたがファイルが正しいかどうかをどのような根拠に基づいて判断できるか教えてください。私はちょっと助けることができる..! –

答えて

1

the sqlite3 interface documentationてみると、私は見つけることができるすべては、すべてのファイル名ではなく、データのチャンクを取るsqlite3_open()や友人、です。

このように、独自のカスタムsqlite3ライブラリの出荷には至っていません。ダウンロードしたNSDataを保存する必要があると思います。一時的な場所にダンプしてから開こうとします(おそらくsqlite3_open()うまくいけばFMDBなどを使用しています)、それが失敗した場合は、データが無効であると判断してください。

+0

はい、私は(NSDataを保存してファイルを開く)つもりですが、失敗した場合は正しいファイルがダウンロードされていないことを意味します。 – Anand

1

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

NSString *url = @"http://example.com/mydatabase.bdx"; 
if([url hasSuffix:@".db"]) 
NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];