.realm文件由iCloud自动备份

时间:2015-07-22 18:11:55

标签: ios swift realm

我的应用因其上传到iCloud的内容大小而被拒绝。我应用的Documents文件夹中唯一的文件是 default.realm 数据库文件。我认为这是iCloud上传的文件。如何阻止iCloud将数据库上传到iCloud?

感谢。

2 个答案:

答案 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)