Преобразуемый атрибут в Core Data не экспортируется / syn c с iCloud - PullRequest
1 голос
/ 17 апреля 2020

Я использую NSPersistentCloudKitContainer. Все данные синхронизируются c в iCloud. А при удалении приложения его синтаксис c корректно.

Однако требуется шифровать конфиденциальные данные. Я сделал свой пароль атрибутом Transformable. Таким образом, хорошо работают локально. Однако, когда я удаляю приложение. Установите снова. Все остальные атрибуты (String, Int) syn c правильно, но преобразуемый атрибут не экспортируется / не синхронизируется.

Вот моя модель enter image description here

public class EmployeeEntity: NSManagedObject {

    @NSManaged public var password: NSObject?

    @NSManaged public var firstName: String?
    @NSManaged public var lastName: String?
    @NSManaged public var idNumber: String?
    @NSManaged public var modifiedDate: Date?
    @NSManaged public var password: String?
    @NSManaged public var title: String?

    static var entityName: String { return "EmployeeEntity" }
}


extension EmployeeEntity {

    static func getListItemFetchRequest() -> NSFetchRequest<EmployeeEntity>{
        let request = EmployeeEntity.fetchRequest() as! NSFetchRequest<EmployeeEntity>
        request.sortDescriptors = [NSSortDescriptor(key: "createdDate", ascending: false)]
        return request
    }
}

import UIKit

class EncryptionTransformer: ValueTransformer {

    override class func allowsReverseTransformation() -> Bool{
        return true
    }
    override class func transformedValueClass() -> AnyClass {
        return NSData.self
    }
    override func transformedValue(_ value: Any?) -> Any?{
        guard let date = value as? String else {return nil}

        return date.data(using: .utf8)?.base64EncodedData()
    }

    override func reverseTransformedValue(_ value: Any?) -> Any?{
        guard let data = value as? String, let decoded = Data(base64Encoded: data) else {return nil}

        return String(data: decoded, encoding: .utf8)
    }
}

Есть ли у вас какие-либо идеи, почему преобразуемое значение не сохраняется / син c из iCloud?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...