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

翻阅sqlite3 接口文档,我只能找到sqlite3_open()和朋友,它们都采用文件名,而不是数据块。

因此,除了提供您自己的自定义 sqlite3 库之外,我认为您将不得不NSData按照您的描述保存下载的 - 将其转储到临时位置,然后尝试打开它(可能使用sqlite3_open(),但希望您使用的是FMDB或类似),如果失败,则得出数据无效的结论。

于 2012-04-19T11:58:53.593 回答
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 回答