Требуется помощь в отладке исключения в _encodeObject при использовании [NSValue valueWithCATransform3D: ] для создания атрибута Transformable

Я пытаюсь сохранить CATransform3D в хранилище основных данных. В моем собственном подклассе NSObject я использую:

self.transform = [NSValue valueWithCATransform3D: inputTransform ];

преобразовать вход CATransform3D в значение NSValue. NSLog показывает, что выглядит как ожидаемое преобразование:

2012-10-02 18:12:27.019 Model Importer[27908:303] Transform: <00000000 0000f03f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000f03f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000f03f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000f03f>

Из всего, что я прочитал, NSValue, реализуя NSCoding (через NSSecureCoding), должен быть сохраняем, когда он указан как Transformable в модели. Однако при записи в магазин я получаю исключение:

[NSKeyedArchiver encodeValueOfObjCType: at:]: этот архиватор не может кодировать структуры

У меня есть другие трансформируемые атрибуты типа CIColor, которые, кажется, работают нормально.

Я уверен, что есть много других способов хранения атрибутов CATransform3D, но я бы хотел понять, что здесь не работает, чтобы избежать подобных ситуаций.

Что бы это ни стоило, на данный момент хранилище настроено на двоичный файл по умолчанию, но мне кажется, что это не будет зависеть от типа хранилища.

Я что-то пропустил, это известная ошибка или что-то еще?

0 ответов

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