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)")
        }
    }
}