大佬教程收集整理的这篇文章主要介绍了你如何压缩iOS上的Realm DB?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是Realm()就像一个单例并且回收对象,所以我无法真正关闭它并告诉它打开新的default.realm文件.
这里的文档(https://realm.io/docs/objc/latest/api/Classes/RLMRealm.html)建议我在autorelease {}中包装所有的Realm()调用,但它不能这么复杂.
正如您“定期”编写的那样,每个应用程序的启动可能已经足够,具体取决于您的用例.
在启动应用程序时,在专用的自动释放池中打开Realm仍然相对容易,将压缩的副本写入不同的路径并用它替换default.realm文件.
斯威夫特2.1
func compactRealm() { let defaultURL = Realm.Configuration.defaultConfiguration.fileURL! let defaultParentURL = defaultURl.URLBydeletingLastPathComponent! let compactedURL = defaultParentURl.URLByAppendingPathComponent("default-compact.realm") autoreleasepool { let realm = try! Realm() realm.writeCopyToPath(compactedURL) } try! NSFileManager.defaultManager().removeItemAtURL(defaultURL) try! NSFileManager.defaultManager().moveItemAtURL(compactedURL,toURL: defaultURL) } func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { compactRealm() // further setup … return true }
Swift 3.0
func compactRealm() { let defaultURL = Realm.Configuration.defaultConfiguration.fileURL! let defaultParentURL = defaultURl.deletingLastPathComponent() let compactedURL = defaultParentURl.appendingPathComponent("default-compact.realm") autoreleasepool { let realm = try! Realm() try! realm.writeCopy(toFile: compactedURL) } try! FileManager.default.removeItem(at: defaultURL) try! FileManager.default.moveItem(at: compactedURL,to: defaultURL) } func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { compactRealm() // further setup … return true }
以上是大佬教程为你收集整理的你如何压缩iOS上的Realm DB?全部内容,希望文章能够帮你解决你如何压缩iOS上的Realm DB?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。