领域:为领域文件设置 NSURLIsExcludedFromBackupKey

Realm: setting NSURLIsExcludedFromBackupKey for realm file

我想为我的领域文件设置 NSURLIsExcludedFromBackupKey。原因是因为我想将它从 iCloud 中排除。我有以下代码:

public class func configure() {
    var config = Realm.Configuration()

    config.fileURL = config.fileURL!.URLByDeletingLastPathComponent?
        .URLByAppendingPathComponent("Test.realm")

    do {
        try config.fileURL?.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey)

    }
    catch {
        print("Failed to set backupkey")
    }

    Realm.Configuration.defaultConfiguration = config
}

但是该函数始终无法设置密钥。我看不出任何问题,因为它很简单 do/catch。关于为什么这行不通的任何推理?

听起来您的 Realm 数据库文件尚未创建。我认为它是在您实例化 Realm() 之后或在您 write 到 Realm DB 之后创建的。文件存在后,您可以将其从备份中排除。

您编写的代码不起作用,因为您只能将 NSURLIsExcludedFromBackupKey 属性应用于已存在的文件,并且在首次打开 Realm 之前不会创建 Realm 文件。您可以通过几种不同的方式解决这个问题:

  1. 等到您打开 Realm 之后,再将属性应用于 Realm 的文件。请记住,除了主 Realm 文件之外还有一些辅助文件,您可能也想排除这些文件。
  2. 创建一个包含您的 Realm 的子目录,并将该属性应用于该目录,以便排除它及其内容。这可以在打开 Realm 之前完成,并且也会处理辅助文件。
  3. 将您的 Realm 存储在 Documents 目录以外的地方。如果 Realm 不包含用户数据,我认为如果您愿意不备份它就是这种情况,那么 Caches 目录可能更适合它。 Caches 目录的内容已从用户的备份中排除。