У меня есть приложение iOS с использованием Restkit 0.20.1 вместе с RKXMLReaderSerialization 0.20.0, чтобы вытащить XML-данные с сервера. Код отлично работает, если сервер отправляет мне данные JSON, но теперь, когда я пытаюсь вытащить данные в формате XML, я зашел в тупик. Я все еще получаю данные с сервера, но я получаю сообщение об ошибке, что читает:Не найдено отображаемых значений при использовании RKXMLReaderSerialization
restkit.object_mapping:RKMapperOperation.m:98 Adding mapping error: No mappable values found for any of the attributes or relationship mappings
Я предполагаю, что это означает, что объект картограф не признает какое-либо данные в качестве соответствия моих основных данных атрибутов, так что ничего не отображать. Я установил RKXMLReaderSerialization через cocoapods и зарегистрировал класс в соответствии с документацией. Но, очевидно, я что-то упускаю. Может ли кто-нибудь указать на это?
Вот где я зарегистрировать класс сериализации
// Set the default store shared instance
[RKManagedObjectStore setDefaultStore:managedObjectStore];
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://www.myserver.com"]];
[RKMIMETypeSerialization registerClass:[RKXMLReaderSerialization class] forMIMEType:@"application/xml"];
Здесь отображение и дескриптора ответа участок:
RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"Gist" inManagedObjectStore:managedObjectStore];
[entityMapping addAttributeMappingsFromDictionary:@{
@"articleId": @"gistID",
@"title": @"title",
@"hashtags": @"hashtags",
@"imageUrl": @"imageUrl",
@"summary": @"summary"}];
entityMapping.identificationAttributes = @[ @"gistID" ];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:entityMapping pathPattern:@"/rest/article/getTicker" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
Здесь применяется часть журнала:
restkit.object_mapping:RKMapperOperation.m:98 Adding mapping error: No mappable values found for any of the attributes or relationship mappings
restkit.network:RKObjectRequestOperation.m:241 GET 'http://www.myserver.com/rest/article/getTicker?ip=255.255.255.0' (200 OK/0 objects) [request=0.2420s mapping=0.0151s total=0.2737s]:
response.headers={
Connection = "Keep-Alive";
"Content-Type" = "application/xml";
Date = "Fri, 31 May 2013 04:30:50 GMT";
"Keep-Alive" = "timeout=5, max=100";
"Transfer-Encoding" = Identity;
}
response.body=<?xml version="1.0" encoding="UTF-8" standalone="yes"?><tickers><ticker><articleId>7587</articleId><authorId>10</authorId><authorName>AFP </authorName><city>Kabul</city><copyrightLine>Copyright 2012 AFP</copyrightLine><countryCode>US</countryCode><countryName>AF</countryName><hashTags>#Afghanistan #unrest #art #offbeat </hashTags><imageUrl>http://www.mywebsite.com/services/images/AFP/photo_1369471279196-2-2.jpg</imageUrl><latitude>34.52813</latitude><longitude>69.17233</longitude>
Как вы видите, тело ответа приходит как XML с основными атрибутами данных I am l ooke для (articleId, title, hashtags, ...), но он не должен запускать тело через xmlreader .... Я довольно новичок в iOS и Objective-C, поэтому любая помощь оценивается, а фрагменты стоят их веса в золоте!
Благодаря
Update ... Вот как XML приходит от сервера
<?xml version="1.0" encoding="UTF-8"?>
<tickers>
<ticker>
<articleId>7587</articleId>
<authorId>10</authorId>
<authorName>AFP </authorName>
<city>Kabul</city>
<copyrightLine>Copyright 2012 AFP</copyrightLine>
<countryCode>US</countryCode>
<countryName>AF</countryName>
<hashTags>#Afghanistan #unrest #art #offbeat </hashTags>
<imageUrl>http://www.mywebsite.com/services/images/AFP/photo_1369471279196-2-2.jpg</imageUrl>
<latitude>34.52813</latitude>
<longitude>69.17233</longitude>
<title>Day after Kabul attacks, 10,000 peace balloons</title>
<totComments>0</totComments>
<totDislikes>0</totDislikes>
<totInappropriate>0</totInappropriate>
<totLikes>0</totLikes>
<totViews>0</totViews>
</ticker>
UPDATE # 2 .... Вот разница в том, как отображается ответ когда я получаю XML и получаю JSON с сервера.
Сериализация
tickers = {
ticker = (
{
articleId = {
text = 7587;
};
authorId = {
text = 10;
};
authorName = {
text = AFP;
};
city = {
text = Kabul;
};
copyrightLine = {
text = "Copyright 2012 AFP";
};
.....Goes on like this for each attribute
JSON напрямую с сервера
{
articleId = 7587;
authorId = 10;
authorName = "AFP ";
city = Kabul;
copyrightLine = "Copyright 2012 AFP";
countryCode = US;
countryName = AF;
hashTags = "#Afghanistan #unrest #art #offbeat ";
imageUrl = "http://www.mywebsite.com/services/images/AFP/photo_1369471279196-2-2.jpg";
latitude = "34.52813";
longitude = "69.17233";
title = "Day after Kabul attacks, 10,000 peace balloons";
totComments = 0;
totDislikes = 0;
totInappropriate = 0;
totLikes = 0;
totViews = 0;
},
Кто-нибудь есть идея, как решить эту проблему?
Вайна, Это, безусловно, получает меня где-то. С вашим предложением консоль теперь читает [NSDictionaryM length]: непризнанный селектор, отправленный экземпляру ... – Ben
Когда это распечатывается? – Wain
Только что понял. Это происходило, когда код пытался загрузить строку для imageUrl в URL-адрес.Я прокомментировал это и добавил некоторые протоколирования, и похоже, что отображение все еще неверно. Я получаю 10 отдельных articleID, но счет показывает только 1. Также, когда я регистрирую строку, полученную из «title», текст не приписывается. Вы определенно получаете галочку за свой ответ. Мне просто нужно еще кое-что сделать! – Ben