带有预先填充的sqlite数据库的iOS发货申请表

时间:2015-04-16 09:11:41

标签: ios swift sqlite

我想用我预先填充的sqlite数据库发送我的ios应用程序(用swift编写),该数据库将通过与服务器同步来更新。在android我可以将数据库从assests文件夹移动到数据库和volla,但在ios中我很安静,我怎么能实现这个目标?

由于

2 个答案:

答案 0 :(得分:6)

在iOS中,您可以将数据库添加到项目支持文件中。这将添加二进制文件,然后您可以访问并复制它。

NSBundle获取预填充数据库的位置:

let databasePath = NSBundle.mainBundle().URLForResource("databaseName", withExtension:"sqlite3");

使用NSFileManager获取文档目录的URL:

//Should have an error pointed in case there is an error.
let documentsDirectory = NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain:NSSearchPathDomainMask.UserDomainMask, url:nil, shouldCreate:false, error:nil);

最后复制文件:

if let source = databasePath, destination = documentsDirectory
{
   destination = destination.URLByAppendingPathComponent("database.sqlite3")
   var result = NSFileManager.defaultManager().copyItemAtURL(source, toURL:destination, error:nil)

   //Should have an error pointer, check that the result is true. If not check error.
}

答案 1 :(得分:0)

简单的方法是: +选择持久性URL位于库文件夹/子文件夹(或文档,如果需要)中的某个位置。 +当您实现persistentStoreCoordinator时,首先检查上面的URL中是否存在.sqlite。如果没有,请将.sqlite文件复制到该位置,如果是,则不执行任何操作。 +使用该URL初始化您的持久存储。

您必须确保.sqlite的数据与数据库模型匹配