0

Мне нужно добавить некоторые значения NSAttributedString для текста в контейнер CloudKit.Добавление NSAttributedString в CloudKit

В CoreData я использую тип атрибута «Transformable». Когда я пытаюсь добавить NSAttributedString к CloudKit У меня есть предупреждение в моем журнале консоли:

*** Нагрузочное приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «Объекты класса NSConcreteMutableAttributedString не может быть установлен на CKRecord '

Могу ли я преобразовать свой NSAttributedString в какой-то тип, который CloudKit принимает и в каком?

ответ

2

Как видно из documentation for CKRecord, вы можете хранить только ограниченный набор типов данных. Учитывая возможные типы, лучшим вариантом будет преобразование NSAttributedString в NSData. Это можно сделать, используя NSKeyedArchiver. Затем, когда вы читаете данные обратно из CloudKit, вы можете преобразовать NSData в исходное NSAttributedString с помощью NSKeyedUnarchiver.

См. https://stackoverflow.com/a/36940864/1226963 для ответа, который показывает, как идти туда и обратно между NSAttributedString и NSData. (на самом деле этот ответ использует NSMutableAttributedString). И, конечно, вы бы поставили/получили NSData в/из CKRecord вместо NSUserDefaults.