Realm:如何获取数据库的当前大小
Realm: How to get the current size of the database
是否有 Realm API 方法来获取我使用 RealmSwift 作为数据存储的 RealmSwift 应用程序的当前数据库大小?这样我就可以在应用程序本身中显示该信息(如统计信息)。
提前致谢
约翰
Realm 的 API 不提供这样的方法。但出于这些目的,使用 Foundation's NSFileManager
API.
似乎就足够了
let realm = …
let path = realm.configuration.fileURL!.path
let attributes = try! NSFileManager.defaultManager().attributesOfItemAtPath(path!)
let fileSize = attributes.fileSize()
但请注意:报告的文件大小并未完全被数据占用。出于性能原因,Realm 预先获取更多磁盘 space。如果你想要实际存储数据的磁盘使用情况,你需要先写一个压缩副本并可以测量它,但这似乎是为了向最终用户报告它的用例而不是误导并且会打性能。
更新:
Realm 从 0.99+ 版本开始使用 NSURL
作为路径。示例代码已相应更改。
更新版本 Swift 3
func checkRealmFileSize() {
if let realmPath = Realm.Configuration.defaultConfiguration.fileURL?.relativePath {
do {
let attributes = try FileManager.default.attributesOfItem(atPath:realmPath)
if let fileSize = attributes[FileAttributeKey.size] as? Double {
print(fileSize)
}
}
catch (let error) {
print("FileManager Error: \(error)")
}
}
}
是否有 Realm API 方法来获取我使用 RealmSwift 作为数据存储的 RealmSwift 应用程序的当前数据库大小?这样我就可以在应用程序本身中显示该信息(如统计信息)。
提前致谢
约翰
Realm 的 API 不提供这样的方法。但出于这些目的,使用 Foundation's NSFileManager
API.
let realm = …
let path = realm.configuration.fileURL!.path
let attributes = try! NSFileManager.defaultManager().attributesOfItemAtPath(path!)
let fileSize = attributes.fileSize()
但请注意:报告的文件大小并未完全被数据占用。出于性能原因,Realm 预先获取更多磁盘 space。如果你想要实际存储数据的磁盘使用情况,你需要先写一个压缩副本并可以测量它,但这似乎是为了向最终用户报告它的用例而不是误导并且会打性能。
更新:
Realm 从 0.99+ 版本开始使用 NSURL
作为路径。示例代码已相应更改。
更新版本 Swift 3
func checkRealmFileSize() {
if let realmPath = Realm.Configuration.defaultConfiguration.fileURL?.relativePath {
do {
let attributes = try FileManager.default.attributesOfItem(atPath:realmPath)
if let fileSize = attributes[FileAttributeKey.size] as? Double {
print(fileSize)
}
}
catch (let error) {
print("FileManager Error: \(error)")
}
}
}