我的应用因其上传到iCloud的内容大小而被拒绝。我应用的Documents文件夹中唯一的文件是 default.realm 数据库文件。我认为这是iCloud上传的文件。如何阻止iCloud将数据库上传到iCloud?
感谢。
答案 0 :(得分:8)
根据App Backup Best Practices section of the iOS App Programming Guide,<Application_Data>/Library/Caches
或<Application_Data>/tmp
不会备份到iCloud。通常,您可以使用<Application_Data>/Library/Caches
目录来保存您不会备份到iCloud的数据。
要更改Realm的文件路径,可以在创建Realm实例时传递path
参数,如下所示:
let realmPath = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)[0] as! String
let realm = Realm(path: realmPath.stringByAppendingPathComponent("data.realm"))
否则,您可以使用NSURLIsExcludedFromBackupKey
文件系统属性从备份中排除文件和目录(请参阅Technical Q&A QA1719)。如果要使用默认路径,则只能从备份中排除Realm文件。
let realm = Realm()
if let realmPathURL = NSURL(fileURLWithPath: realm.path) {
realmPathURL.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey, error: nil)
}
答案 1 :(得分:0)
自发布上一个答案以来,URL API似乎已更改。您可以通过以下方式立即禁用备份:
let realm = try! Realm()
guard var url = realm.configuration.fileURL else {
return
}
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true
try? url.setResourceValues(resourceValues)