在app和扩展程序之间共享sqlite数据库

时间:2015-05-10 20:05:20

标签: database sqlite ios8-extension

我已经按照this教程添加了我的数据库。我确实定位了我的应用和扩展程序。从我的应用程序,我可以SELECT,INSERT,DELETE和UPDATE到数据库。我希望我的应用和扩展程序共享同一个数据库。所以我在我的应用程序中添加信息,然后在扩展程序中显示该信息。

由于它现在有效(我已经测试过),该应用程序有一个数据库实例,扩展名有一个实例。我只添加了一个db。任何人都知道为什么我有两个数据库实例以及为什么我无法访问扩展中应用程序添加的数据?

1 个答案:

答案 0 :(得分:3)

应用及其扩展程序是单独的进程,因此iOS沙盒通常意味着它们无法触及彼此的文件。您引用的页面似乎无法以任何方式解决此问题。

如果要在应用和扩展程序中使用相同的SQLite文件,则需要为这两个文件配置“应用程序组”权利。这将设置一个他们都可以访问的新目录,并将您的SQLite文件放在那里。您可以使用containerURLForSecurityApplicationGroupIdentifier:上的NSFileManager方法找到此目录。

我不清楚您使用的GitHub项目是否会使用应用程序组。但是,没有其他方法可以共享您的SQLite文件。如果该项目不使用应用程序组,则您需要修复它以便它执行或停止使用它。