为啥在使用代码将 db 复制到文档文件夹之前 Xcode 会自动复制 db 并且它是空的?

Posted

技术标签:

【中文标题】为啥在使用代码将 db 复制到文档文件夹之前 Xcode 会自动复制 db 并且它是空的?【英文标题】:Why before using code for copy db to document folder Xcode automatically copy db and it is empty?为什么在使用代码将 db 复制到文档文件夹之前 Xcode 会自动复制 db 并且它是空的? 【发布时间】:2016-12-13 07:57:50 【问题描述】:

我曾经使用代码将数据库从捆绑包复制到文档文件夹。但是当运行Xcode项目之前运行我的代码数据库已经复制到文件夹,另一个问题是:复制的数据库是。当我的代码检查文档文件夹是否存在数据库结果为 YES 时,不会将完整的数据库复制到文档文件夹。 我正在使用 Xcode 8.1、ios8。 请帮帮我。 谢谢。

【问题讨论】:

【参考方案1】:

也许,您使用 XCode 生成的代码,并在第一次调用 managedObjectContext 数据库时创建。最简单的解决方案是:

检查数据库是否为空(某些实体的记录数 == 0) 如果是,请将文件从捆绑包复制到目标目录。

如果您的数据库以只读模式使用,则根本不需要将其复制到 Documents 文件夹中 - 您可以直接从 bundle 目录中使用它。

在后一种情况下,您需要在持久存储选项的目录中设置正确的键,并复制索引文件,如果您还使用 SQLITE 存储到包中。

【讨论】:

以上是关于为啥在使用代码将 db 复制到文档文件夹之前 Xcode 会自动复制 db 并且它是空的?的主要内容,如果未能解决你的问题,请参考以下文章

将 sqlite DB 从收件箱复制到文档目录

为啥我所有的 C++ 程序都以 0xc0000139 退出?

为啥从网上复制的东西到WORD里面文字格式就变了,显示乱码了呢

使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码

为啥我无法在文档上设置 innerHTML? [复制]

如何将 PreCreated 和 Pre Populated 完整的 sqlite database.db 文件复制到 iOS 应用程序中