Могу ли я сериализовать NSManagedObject? - PullRequest
2 голосов
/ 15 февраля 2012

Мне нужно отправить объект (подкласс NSManagedObject (NSMO)) в веб-сервис и получить его позже.Я надеялся, что смогу как-нибудь сериализовать его, но я надеюсь, что мне не придется прыгать через циклы кодирования.

Я могу преобразовать простой объект NSMO в словарь, используя: [instance dictionaryWithValuesForKeys:instance.entity.attributesByName.allKeys];

Тем не менее, моя NSMO имеет ряд уровней с точки зрения отношений с другими NSMO.Как лучше всего создать полную сериализованную версию объекта?

1 Ответ

4 голосов
/ 15 февраля 2012

Если вы хотите сделать это в общем виде, вы можете написать рекурсивный метод serializedDictionary (либо в подклассе NSManagedObject, либо в категории), который:

  1. Создает пустой NSMutableDictionary.
  2. Для каждого свойства добавляет ключ и значение в словарь.
  3. Для каждого отношения добавляет имя отношения в качестве ключа, а затем вызывает serializedDictionary объекта и добавляет его в качестве значения. Если это отношение ко многим, вам придется поместить эти значения в NSArray.

Обратите внимание, что если вообще возможно связать дочерний объект обратно с родителем (что очень возможно, если у вас есть обратные отношения, как рекомендует Core Data), вам нужно будет либо внести белый список в отношения, которые вы сохраняете (проще) или передать набор, чтобы отследить, какие объекты уже были сериализованы, чтобы вы больше не кодировали их (сложнее, я не рекомендую этого).

...