- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的问题:我在缓存目录中有我的 SQLite 数据库文件,并将 isExcludedFromBackup 设置为 true 因为我读到,这样做会防止 iOS 系统在存储空间满的情况下删除它。但它仍然被删除。这是在使用 iOS 10.3.3 的真实设备 iPhone 5s 的开发中观察到的。
SQLite 数据库文件是由 SQLite.swift API 创建的,这可能很重要但不是必须的原因。 https://github.com/StephenCelis/SQLite.swift
使用 SQLite.swift 创建文件:
let path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first!
let databaseName = "name.extension"
let filePath = "\(path)/\(databaseName)"
self.db = try! Connection(filePath) // creates the file, if it does not exists
设置 isExcludedFromBackup 标志:
func excludeSQLiteFileFromBackup(path: String) {
let exists = FileManager.default.fileExists(atPath: path)
if !exists {
MyLogger.log("excludeSQLiteFileFromBackup: file not created yet.", aClass: self.classForCoder)
return
}
var url = URL(fileURLWithPath: path)
do {
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true
try url.setResourceValues(resourceValues)
} catch let error as NSError {
MyLogger.log("excludeSQLiteFileFromBackup: \(error)", aClass: self.classForCoder)
}
}
这是使用相同的文件路径调用的,该文件路径在第一个代码块中提供给连接。我还通过在将该文件设置为 true 之前和之后从该文件中获取 ResourceValues 来检查该标志是否设置正确,并且它正确地获得了更改。
因为它是离线使用所必需的,所以符合商店指南应该没问题。
问题:
最佳答案
1) 不是,isExcludedFromBackup = true
意思是当用户备份他的手机时,这个文件不会被包含,我不知道你为什么认为它不会被删除。
2) 解决问题的正确方法是将数据库迁移到 Documents 目录,您无法控制缓存目录,iOS 会在需要时清除它。
关于iOS:防止 .cacheDirectory 中的文件在存储空间已满警告时被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749185/
这个问题已经有答案了: Add a property to a JavaScript object using a variable as the name? (14 个回答) 已关闭 6 年前。 目
每个 Azure 存储帐户的卷限制为 200 TB(200 TB)。这听起来确实很大,但如果您将文件存储在每个 25 MB 的 Blob 存储中,则可以存储大约 400 万个文件,这很好,但并非不可能
我在 Applestore 中发布了我的应用程序以供审核,但遭到拒绝,上面写着: ”在启动和内容下载时,您的应用程序会在用户的 iCloud 上存储 1.4 GB,这不符合 iOS 数据存储指南。"
我对 laravel 的 remember me 功能有点问题。通常,laravel 添加一个 session cookie、一个xsrf token 和具有随机哈希值的第三个 cookie。 (下图
我需要在 SQL 中存储十亿个直方图。这些直方图具有相同的桶,但它们的计数可能有很大的差异,但是,大多数桶在很多时候都是 0。 我最初的尝试是让每个直方图有一行,其中每一列代表一个桶。 我对我的数据类
我正在处理 70GB 的数据集 较早使用 df -BG命令 我被展示了 Filesystem 1G-blocks Used Available Use% Mounted on overlay
有些文件每天都会上传到 FTP 服务器,我需要将这些文件放在 Google Cloud Storage 下。我不想让上传文件的用户安装任何额外的软件,只是让他们继续使用他们的 FTP 客户端。有没有办
如何上传内容类型为 mutlipart/formdata ---boundaryString 的文件使用 signed url谷歌存储? 我面临的问题是,当我们使用浏览器上传文件时,浏览器将内容类型设
版本: 11.2.0.2.0 我想验证我在手册中再次阅读的以下断言: The PLS_INTEGER data type has these advantages over the NUMBER da
我只是在寻找澄清,因为文档指出一个空的、刚刚创建的 SQL 实例应该只占用大约 250Mb。 从文档中引用我可以在存储空间上找到的任何内容: MySQL Second Generation insta
我是一名优秀的程序员,十分优秀!