2014-01-26 5 views
0

Я использую последнюю Restkit 0.20.3отображение RestKit неуправляемых объектов

В настоящее время я создаю свои управляемые сопоставления, как так:

RKEntityMapping *messagesAddedMapping = [RKEntityMapping mappingForEntityForName:@"Message" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore]; 

Но что, если я хочу, создающих отображение, не сохраняет этот объект к основным данным?

Если я:

RKEntityMapping *messagesAddedMapping = [RKEntityMapping mappingForClass:[Message class]]; 

Я получаю сообщение об ошибке:

'NSInternalInconsistencyException', reason: 'You must provide a managedObjectStore. Invoke mappingForClass:inManagedObjectStore: instead.'

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

Моя проблема заключается в том, что у меня есть Message лицо, которое я обычно просто добавлять сообщения в получении новых сообщений, но новый API я собираюсь потребляющих имеет 3 свойства: messagesToAdd [массив сообщение], messagIdsToRemove [строка массива] , messagesModified [сообщение массив].

Итак, я создаю новый объект MessagePayload который имеет 2 отношения: messagesAdded (Message) и messagesModified (Message), а также имеет messageIdsToDelete (transformable).

И для MessagePayload, я не хочу, чтобы все это хранилось. В блоке успеха я просто хочу добавлять новые сообщения, обновлять измененные сообщения и удалять из списка удаления.

ответ

1

У вас не может быть сопоставления, которое создает управляемый объект, но не сохраняет его в контексте. Вы можете редактировать возвращаемые объекты, а затем повторно сохранять их из блока успеха, если хотите.

Если по какой-либо причине это не вариант, вы можете создать сопоставление с пользовательским объектом или словарем, а затем преобразовать в управляемый объект и сохранить себя.

Если вы решите использовать словарь, вы можете легко обновить управляемый объект с помощью метода KVC setValuesForKeysWithDictionary:.


Ваш комментарий ниже, сделайте шаг назад и немного подумать:

  1. мне нужно собрать все эти данные в 1 ходу (я могу использовать несколько дескрипторов ответов) Есть ли?
  2. Есть ли у меня настройки моего уникального идентификатора, чтобы RestKit мог автоматически обновлять меня?
  3. Нужно ли все входить в Core Data?

Хотя я не знаю о ваших уникальных идентификаторах (вы должны настроить их), вы можете использовать 2 или 3 дескриптора ответа для отображения этого содержимого. RestKit может автоматически обрабатывать новые и обновленные объекты непосредственно в контексте. Для ваших удалений сопоставьте их с пользовательским объектом или NSMutableArray, а затем удалите объекты из блока успеха.

+0

моя проблема заключается в том, что у меня есть объект сообщения, который я обычно добавляю сообщениям при поступлении новых сообщений, но новый API, который я собираюсь использовать, имеет 3 свойства: messagesToAdd [массив сообщений], messagIdsToRemove [строка массива] messagesModified [массив сообщений]. Поэтому я создаю новый объект MessagePayload, который имеет 2 отношения: messagesAdded (Message) и messagesModified (Message), а также имеет messageIdsToDelete (Transformable). – Jesse

+0

И для messagePayload я не хочу, чтобы какая-либо из них хранилась. В блоке успеха я просто хочу добавлять новые сообщения, обновлять измененные сообщения и удалять из списка удаления. – Jesse

+0

На самом деле, Wain, после ввода моих комментариев выше, я немного подумал об этом, и я думаю, что если messagesAdded и messagesModified отображаются, как вы говорите, как новые дескрипторы дочерних ответов, которые будут обрабатывать добавление/удаление в любом случае, а для удаления я могу просто сделайте это в блоке успеха. Благодаря! Я думаю, что все будет хорошо и намного проще! – Jesse

Смежные вопросы