.realm文件由iCloud自动备份

bit*_*low 3 realm ios swift

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

谢谢.

kis*_*umi 8

根据iOS App Programming GuideApp Backup Best Practices部分,<Application_Data>/Library/Caches或者<Application_Data>/tmp不会备份到iCloud.通常,您可以使用<Application_Data>/Library/Caches目录来保存您不会备份到iCloud的数据.

要更改Realm的文件路径,可以path在创建Realm实例时传递参数,如下所示:

let realmPath = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)[0] as! String
let realm = Realm(path: realmPath.stringByAppendingPathComponent("data.realm"))
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用NSURLIsExcludedFromBackupKey文件系统属性从备份中排除文件和目录(请参阅技术问答QA1719).如果要使用默认路径,则唯一的方法是从备份中排除Realm文件.

let realm = Realm()
if let realmPathURL = NSURL(fileURLWithPath: realm.path) {
    realmPathURL.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey, error: nil)
}
Run Code Online (Sandbox Code Playgroud)

  • @nacho4d 通常将该属性设置为包含领域和辅助文件的目录。但该属性在 v2.10.1 中默认设置为“true”。你不需要自己做。https://github.com/realm/realm-cocoa/pull/5270 (2认同)