Как хранить токены изменения зоны CloudKit?

Поэтому в настоящее время я использую следующие методы для получения и установки токенов изменения зоны:

private func zoneChangeToken(for zoneID: CKRecordZoneID) -> CKServerChangeToken? {
    let cacheKey = self.name(for: self.database) + "." + zoneID.zoneName + "." + zoneID.ownerName
    if let data = UserDefaults.standard.data(forKey: cacheKey) {
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? CKServerChangeToken
    } else {
        return nil
    }
}

private func setZoneChangeToken(changeToken: CKServerChangeToken?, for zoneID: CKRecordZoneID) {
    let cacheKey = self.name(for: self.database) + "." + zoneID.zoneName + "." + zoneID.ownerName

    if changeToken == nil {
        UserDefaults.standard.removeObject(forKey: cacheKey)
    } else {
        let data = NSKeyedArchiver.archivedData(withRootObject: changeToken!)
        UserDefaults.standard.set(data, forKey: cacheKey)
    }
}

Я пытаюсь уникально предназначаться для зоны, создавая путь от базы данных до зоны. Однако, поскольку общая база данных может иметь несколько зон с одним и тем же именем зоны, я добавил имя владельца зоны.

Вопрос в том, является ли это правильным способом хранения токенов изменения зоны или есть лучший, более эффективный способ?

0 ответов

Другие вопросы по тегам