我正在尝试下载必须在应用中使用的数据库(SQLite)。在保存下载的数据(作为NSData)之前,我想检查下载的数据是否是SQLite数据库。我该怎么检查。
例如:
数据库的正确URL1是http://example.com/mydatabase.db
如果以某种方式输入的URL为http://example.com/mydatabase.bdx,但不存在,我仍会在NSData中收到一些数据。
NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://example.com/mydatabase.db"]];
我肯定可以在保存文件并尝试打开后进行检查,如果无法打开则会出现问题。但是如果没有下载正确的数据,我想检查NSData而不需要保存文件。
如何在不保存的情况下查看?
答案 0 :(得分:1)
下面的代码将帮助您检查扩展程序。
NSString *url = @"http://example.com/mydatabase.bdx";
if([url hasSuffix:@".db"])
NSData *dbfile = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
答案 1 :(得分:1)
通过the sqlite3 interface documentation查看,我找到的只有sqlite3_open()
和朋友,它们都采用文件名,而不是一大块数据。
因此,如果没有运送您自己的自定义sqlite3库,我认为您将不得不保存已下载的NSData
,如您所述 - 将其转储到临时位置,然后尝试打开它(可能与sqlite3_open()
,但希望您使用FMDB或类似内容),如果失败,请断定数据无效。