В RestKit можно использовать идентификационные атрибуты, которые на самом деле не являются частью ответа JSON?RestKit - использовать идентификационные атрибуты, которые не являются частью ответа
Мой случай следующее - у меня есть сервис, который перечисляет все статьи для вошедшего в данный момент пользователя, как http://example.com/json/articles.json
Моя проблема заключается в следующем - поскольку приложение позволяет нескольким пользователям для входа, я держу статьи в базе данных вместе с userId для каждой статьи. Если я установил articleMapping.identificationattributes = @["articleId"]
, тогда у меня возникнет проблема, если два пользователя, использующие устройство, имеют одну и ту же статью - они будут перезаписаны независимо от userId, потому что они не являются частью ответа.
Суммируя факты:
- для запроса JSON не отправить идент, она является частью сеанса сервера только, так что я думаю, что я не могу использовать
RKRoute
- я отображение статьи с пользователем вручную после отображения RestKit.
- У меня нет свойства userId как часть ответа JSON, оно существует только внутри объекта ArticleManagedObject.
Есть ли способ сообщить RestKit, что во время сопоставления он должен проверить комбинацию articleId+userId
как идентификатор? Я пробовал использовать идентификациюPredicate без успеха.
EDIT:
Пример ответа от сервера, когда UserA вошел в:
{
"data":{
"articles":[
{
"articleId":1,
"title":"Objective C Basics"
},
{
"articleId":2,
"title":"Xcode Basics"
}
]
}
}
и вот ответ, когда UserB регистрируется в:
{
"data":{
"articles":[
{
"articleId":1,
"title":"Objective C Basics"
},
{
"articleId":3,
"title":"Java Basics"
}
]
}
}
Если UserA входит в систему, все в порядке. Но если UserB входит в систему с одного и того же устройства, то статья 1 сопоставляется с UserB, и с этого момента соединение между UserA и статьей 1 теряется.
Как я понимаю из вашего предложения, единственное решение - вернуть также идентификатор пользователя из службы, установить RKUnionAssignmentPolicy и позволить RestKit заботиться о сопоставлении (в настоящее время я вручную делаю сопоставление между статьями и пользователями после RestKit) ,
Другой вопрос, который у меня есть, - это возможность установить идентификационные атрибуты или идентификационный файл, чтобы он делал разделение между предметной статьей 1 для объекта UserA и объектом 1 для UserB.
Являются ли статьи для каждого пользователя (с тем же идентификатором) одинаковыми? Можете ли вы просто использовать отношения «многие»? – Wain
Отношение пользователя к статье «много ко многим», но служба возвращает только статьи для текущего пользователя сеанса. Мое отношение между пользователем и статьей можно назвать «isReading» для лучшего понимания. Многие пользователи могут читать одну и ту же статью, и один пользователь может читать много статей. – o15a3d4l11s2
Взгляните на http://stackoverflow.com/questions/20162007/restkit-2-0-mapping-second-entitiy-nil-when-not-unique и посмотрите, помогает ли это – Wain