当前位置: 首页 > 知识库问答 >
问题:

ApplicationDocuments生成时得目录更改

庄宇
2023-03-14

我创建了一个新的swift项目,并在“使用核心数据”的框中打勾。我注意到,每次我构建到我的设备时,我的数据都从数据库中清除了。在跟踪代码时,我注意到每次运行应用程序时,xcode添加到应用程序委托中的核心数据的默认设置都有一个不同的url:

line in app del:
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("Testo.sqlite")

first execution
file:///var/mobile/Containers/Data/Application/3EA9BE17-223E-4FA9-A8AB-E30161B39BF5/Documents/Testo.sqlite

second execution
file:///var/mobile/Containers/Data/Application/FA0F72CF-B6BD-4ADA-AE19-D71A3189DAA0/Documents/Testo.sqlite

third execution
file:///var/mobile/Containers/Data/Application/BD20A689-0D02-4353-BB1E-14857496D2E9/Documents/Testo.sqlite

我猜这就是为什么我的数据一直令人失望的原因。有没有一种方法可以防止这样做,这样看起来我的数据就不会被清除了。

共有1个答案

夏长卿
2023-03-14

正如您所注意到的,nsdocumentdirectory在每个构建中都会更改。但是,在每次运行之前,documents目录中的文件会被复制到“新”位置。所以我不认为这就是你的数据不断消失的原因。您是否尝试过在这些目录中查看testo.sqlite是否真的存在?如果有,它是否包含任何数据?

附注:

Apple不建议您将数据库文件存储在nsdocumentdirectory中。相反,请将SQLite存储设置为应用程序库中:

var appDir=NSSearchPathForDirectoriesInDomains(.librarydirectory,.userdomainmask,true)

以下是苹果公司关于不同目录的一些文档,供将来参考:

iOS标准目录:文件所在的位置

 类似资料:
  • 我的版本:jkd11 我尝试了下面的代码,但抛出了Docx4JException,但github演示就是这样https://github.com/plutext/docx4j/blob/docx4j-parent-11.1.0/docx4j-samples-docx4j/src/main/java/org/docx4j/samples/TocAdd.java

  • 1. 前言 目录是文章内容的整体索引,是文章结构的最直观表现形式。 Markdown 为生成目录提供了快捷方式,大大降低了文章目录的编排复杂度。 环境说明: 考虑到 Markdown 工具之间的不兼容,有的内容直接从页面复制粘贴到本地不会正常显示,大家学习时自己动手写是肯定没问题的。本节所有实例代码及演示效果均使用 Typora 工具完成。 「TOC」是 Markdown 扩展语法,Typora

  • 我从url下载视频文件,并将其保存在document目录中,路径如下: 我的视频下载并成功播放。但有一个问题,当我重建应用程序在Xcode和尝试播放我下载的最后一个视频时,视频不显示,而当我下载一个新的视频,这保存和播放成功。 我看过每个视频捆绑路径,它们是不同的。 1-文件:///users/mymac/library/developer/coresimulator/devices/eac2f4

  • 我正在使用cmake来构建我的C++项目。 我在src文件夹中有我的cmakelist.txt和main.cpp。

  • ant、java、node.js、phonegap和我的adobe帐户都设置正确。入门指南说我应该能够输入: 创建phonegap项目。这不起作用,但请遵循这些说明并执行以下操作: 最终我得到了一个。apk文件。但是《入门指南》告诉我打开eclipse并导航到项目的目录,然后将子目录设置为/android。但是,当你构建android时,/android不会被创建,所以我没有什么可以做的。 如何获

  • 在阅读的API时,我错过了很多函数。首先,它建议使用for循环从stream转到。而且我忽略了一个事实,即不是。 如何在Java8中从生成?