如何在 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 中以编程方式压缩和解压缩文件?

如何在 ios swift 中以编程方式将情节提要视图控制器加载到标签栏控制器中?

如何使用 Swift 在 iOS 中以编程方式进行 segue

如何在 SwiftUI 中以编程方式滚动列表?

如何在 ios 应用程序中以编程方式移动到第二个视图?