商店数据库在iOS的不同位置有什么不同?

我正在使用SQLite.swift。 在文档中,数据库的path是:

let path = NSSearchPathForDirectoriesInDomains( .DocumentDirectory, .UserDomainMask, true ).first! 

但我想导入和使用现有的数据库,所以我已经拖动我的现有数据库到我的键盘扩展文件夹,并创build与path的连接是:

 let path = NSBundle.mainBundle().pathForResource("db", ofType:"sqlite3") 

因此,我注意到第一种方式,数据库将存储在/Users/*/Library/Developer/CoreSimulator/Devices/8B1DB861-AA3F-446F-A559-D4727CDB9285/data/Containers/Data/PluginKitPlugin/0BC647E4-26F3-4A1F-8271-CC73C96FD197/Documents

第二种方式,数据库将被存储在应用程序中。

 /Users/*/Library/Developer/CoreSimulator/Devices/8B1DB861-AA3F-446F-A559-D4727CDB9285/data/Containers/Bundle/Application/E5D9514C-859A-4D4D-A771-A8CE9CDCD3E7/AppName.app/PlugIns/AppNameExt.appex 

这两个地方有什么不同? 第二种方式可能会增加应用程序的大小,因为它包含数据库? 如果我想存档/提交我的应用程序到现有的数据库的AppStore,这是唯一的方法?

主要区别在于将文件存储在文档文件夹中意味着可以写入(更新)文件,这对于数据库文件来说非常重要。 您无法写入应用程序包中的文件。

在应用程序中使用数据库的通常模式是:

  1. 在开发过程中创build一个预先植入的数据库,并在构build过程中将其复制到应用程序包中。
  2. 运行时,检查数据库文件是否存在,并且在文档文件夹中是最新的。
  3. 如果没有,请从应用程序包复制它。
  4. 打开文档文件夹中的数据库并根据需要进行读取/写入。