领域:为realm文件设置NSURLIsExcludedFromBackupKey

时间:2016-08-30 13:28:45

标签: ios swift realm nsurl

我想为我的realm文件设置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。为什么这不起作用的任何推理?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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