如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?
Posted
技术标签:
【中文标题】如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?【英文标题】:How to save the sqlite file in the local folder or nsbundle programatically in iOS? 【发布时间】:2016-05-09 05:25:20 【问题描述】:我的应用程序中已经有一个 sqlite 文件。但是在我的一个应用程序设置页面中,有两个选项恢复和备份。要实施的想法是 a) 单击备份时,必须通过创建一个新文件夹将已经存在的 sqlite 文件保存在应用程序内的另一个文件夹中。 b) 在点击恢复时,必须从新创建的文件夹中的 sqlite 文件中获取数据。
知道如何实现这一目标吗? 谢谢
【问题讨论】:
将数据备份到同一个应用沙箱内的另一个文件夹不是一个好主意。如果有人删除该应用程序,则数据和备份都将被删除。备份需要存储在设备之外。 1.您不能在 NSBundle 2 中写入任何内容。您需要使用可写文件夹,例如 Documents 文件夹 3。如果您有预填充的 sqlite,您可以轻松地将 sqlite 从 NSBundle 复制到您可以在 Documents 文件夹中创建的新文件夹中。 4.所有你需要查看NSFileManager
操作read this。
@iphonic 所以这意味着将sqlite文件复制到documents文件夹中新创建的文件夹
@AshleyRodrigues 是的,但是根据上面的回复,如果您真的想始终为用户保留副本,则应该在设备外备份,因为您可能需要将 sqlite 文件上传到服务器而不是而不是在本地复制,尽管您可以同时做到最好。
@iphonic 不,亲爱的,基本的想法是将文件存储在本地:)
【参考方案1】:
您应该使用 NSFileManager 将现有的 SQLite 文件复制到 Document 目录。保存文件后,将其附加到 Mail Composer 视图,以便用户可以在电子邮件中备份。注册一个可以处理 SQLite 文件的 URL 方案,以便当用户单击 SQLite 附件时,您的应用可以在 openURL 方法中处理它。
【讨论】:
以上是关于如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 中以编程方式上传和下载 Google Drive 上的任何文件
如何在 ios swift 中以编程方式将情节提要视图控制器加载到标签栏控制器中?