Проблемы с iOS Swift Core Data NSSecurUnarchiveFromDataTransformerIOS

Программируем под IOS
Ответить
Anonymous
 Проблемы с iOS Swift Core Data NSSecurUnarchiveFromDataTransformer

Сообщение Anonymous »

Я обновил свое приложение для использования NSSecureCoding. Однако это привело к множеству ошибок/проблем.
По-видимому, я успешно обновил все классы модели, чтобы они работали. В моей модели данных есть сущность с одним «трансформируемым» атрибутом, который представляет собой массив пользовательского класса, который сам содержит множество пользовательских классов. Если я использую общий преобразователь, я успешно сохраняю все в Core Data, однако получаю такие предупреждения:
[img]https://i. sstatic.net/QVL2pZnZ.png[/img]

Код: Выделить всё

*** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x203af77c0) [/System/Library/Frameworks/Foundation.framework]' for key 'uuid', even though it was not explicitly included in the client allowed classes set: '{(
"'Workout' (0x102341358) [/private/var/containers/Bundle/Application/2B2CEB45-F110-47DF-91BB-8774C0A703A9/Pyth14.app]",
"'NSArray' (0x203aefc48) [/System/Library/Frameworks/CoreFoundation.framework]"
)}'. This will be disallowed in the future.
Если я использую пользовательский преобразователь, унаследованный от NSSecureUnarchiveFromDataTransformer, я получаю ошибки кода, и мои данные не сохраняются в основных данных со следующими ошибками (и я все еще получаю вышеупомянутые предупреждения).
Изображение

Код: Выделить всё

fault: exception raised during multi-threaded fetch  threw while decoding a value. ({
NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=4864 \"value for key 'start' was of unexpected class 'NSDate' (0x203aef810) [/System/Library/Frameworks/CoreFoundation.framework].\nAllowed classes are:\n {(\n    \"'Workout' (0x102341358) [/private/var/containers/Bundle/Application/2B2CEB45-F110-47DF-91BB-8774C0A703A9/Pyth14.app]\",\n    \"'NSArray' (0x203aefc48) [/System/Library/Frameworks/CoreFoundation.framework]\"\n)}\"
Пытаясь отследить проблему, похоже, что преобразователь каким-то образом не читает правильные «allowedTopLevelClasses», и лучшая трассировка, которую я смог сделать, это поместить оператор печати, чтобы гарантировать что на самом деле у преобразователя есть список классов, который я ему дал.
Что я могу сказать, так это то, что ошибка связана с содержащимся в массиве классом (тренировкой), поэтому я изо всех сил стараюсь предполагаю, что содержащиеся в них классы сами нуждаются в своих собственных Трансформатор. Я попытался создать атрибут для класса Workout и создать трансформер, НО я все равно получаю то же самое сообщение об ошибке.
К сожалению, документации не существует, и 1, да, только 1 , онлайн-статья, которую я смог найти, представляет собой лишь простой пример преобразователя (а не того, в котором объекты вложены в объекты).
Это связано с проблемой:
Основные данные & Xcode 11: Пожалуйста, переключитесь на использование «NSSecureUnarchiveFromData» или подкласс NSSecureUnarchiveFromDataTransformer
И я попытался сделать все, что упомянуто в единственной онлайн-статье (также упомянутой в приведенном выше вопросе SO). https://www.kairadiagne.com/2020/01/13/ ... -data.html

Подробнее здесь: https://stackoverflow.com/questions/793 ... mer-issues
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»