приложение продолжит использовать некомпактную версию базы данных.

р в документации (https://realm.io/docs/swift/latest/#compacting-realms) мне не очень понятно, так как я не знаю, можно ли вызывать сжатие все время во время использования приложения или только один раз при запуске. Является ли приведенная ниже реализация правильной или было бы лучше создать отдельную конфигурацию, в том числе shouldCompactOnLaunch, для вызова один раз при запуске приложения.

Если я добавлю shouldCompactOnLaunch к конфигурации по умолчанию, я вижу, что блок вызывается каждый раз, когда я создаю экземпляр области.

        Realm.Configuration.defaultConfiguration = Realm.Configuration(schemaVersion: schemaVersion, migrationBlock: migrationBlock,shouldCompactOnLaunch: { totalBytes, usedBytes in
        // totalBytes refers to the size of the file on disk in bytes (data + free space)
        // usedBytes refers to the number of bytes used by data in the file

        // Compact if the file is over 100MB in size and less than 50% 'used'
        let oneHundredMB = 100 * 1024 * 1024
        print ("totalbytes \(totalBytes)")
        print ("usedbytes \(usedBytes)")
        if (totalBytes > oneHundredMB) && (Double(usedBytes) / Double(totalBytes)) < 0.7{
            print("will compact realm")
        }
        return (totalBytes > oneHundredMB) && (Double(usedBytes) / Double(totalBytes)) < 0.7
    })
    do {
        // Realm is compacted on the first open if the configuration block conditions were met.
        _ = try Realm(configuration: config)
    } catch {
        // handle error compacting or opening Realm
    }

И еще одна вещь, которая была бы мне интересна: что произойдет, если не получится уплотнение Слишком мало места было бы причиной. Смогу ли я получить доступ к данным, и сжатие будет просто пропущено?

Ответы на вопрос(2)

Ваш ответ на вопрос