领域:如何获取数据库的当前大小

Joh*_* B. 7 database realm ios swift

是否有Realm API方法使用RealmSwift作为数据存储来获取我的RealmSwift应用程序的当前数据库大小?这样我就可以在应用程序本身中显示该信息(如统计信息).

提前致谢

约翰

mar*_*ius 7

Realm的API不提供这样的方法.但出于这些目的,使用Foundation的NSFileManagerAPI似乎就足够了.

let realm = …
let path = realm.configuration.fileURL!.path
let attributes = try! NSFileManager.defaultManager().attributesOfItemAtPath(path!)
let fileSize = attributes.fileSize()
Run Code Online (Sandbox Code Playgroud)

但请注意:报告的文件大小并未完全被数据占用.出于性能原因,Realm预先获得更多磁盘空间.如果你想要实际存储数据的磁盘使用,你需要先编写一个压缩的副本并且可以测量它,但这似乎是用于向最终用户报告它而非常误导的用例性能.

更新:

NSURL从版本0.99+开始,Realm 用于路径.示例代码已相应更改.

  • 嗨marius.非常感谢你那么快.适合我的作品.只是旁注:`attributes.filesize`不存在(也许只有Swift 2.0),但我想通过使用filesize作为关键来获得这个值.`让fileSize =属性[NSFileSize]为!NSNumber`再次感谢.干杯.约翰 (2认同)

sul*_*lik 6

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)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)