Как мне работать с моим объектом ответа, который соответствует идентификаторам узлов?
Редактировать формулировку..
Я использую стороннюю библиотеку под названием Drupal-IOS-SDk, чтобы связать мой веб-сайт Drupal с моим разрабатываемым приложением IOS. Я использую метод для индексации узлов на моем веб-сайте, и мне просто интересно, есть ли у кого-нибудь какие-либо знания о том, как поступить с ответом с моего сайта. Чтобы получить немного контекста, если я запускаю код, похожий на мой метод индекса (метод getNode), который отлично работает, и я могу получить доступ к своему ответу, как показано ниже:
//code for correctly working nodeGet method
NSMutableDictionary *nodeData = [NSMutableDictionary new];
[nodeData setValue:@"650" forKey:@"nid"];
[DIOSNode nodeGet:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
//print out responseObject
//NSLog(@"%@", responseObject);
//pull data from the responseObject
NSInteger testNumber = [responseObject objectForKey:@"changed"];
NSLog(@"%ld", (long)testNumber);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//we failed, uh-oh lets error log this.
NSLog(@"%@, %@", [error localizedDescription], [operation responseString]);
}];
Это то, что печатается объектом ответа (я не включил все это, но вы поймете, в чем суть):
//printed statement for correctly working nodeGet method
{
changed = 1390534644;
comment = 0;
created = 1390534644;
data = "b:0;";
"ds_switch" = "";
"field_additional_pictures" = (
);
"field_author" = {
und =
Приведенный выше код получает данные об узлах, и вызов метода "objectforkey" для responseObject позволяет мне получить доступ к номерам или к чему-либо еще, что хранится в моем responseObject. Там, где я прокомментировал данные извлечения из объекта ответа, я получаю целое число "1390534644", которое правильно соответствует "измененной" переменной, как вы можете видеть из напечатанного ответа выше. Вышеуказанный раздел работает отлично. Это следующий шаг, где я запутался:
//code for index method that is in question
NSMutableDictionary *paramsDictionary = [NSMutableDictionary new];
[paramsDictionary setValue:@"books_e_books_other_books" forKey:@"type"];
[DIOSNode nodeIndexWithPage:@"0" fields:@"nid" parameters:paramsDictionary pageSize:@"20"
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//print response object
NSLog(@"%@", responseObject);
NSLog(@"GREAT SUCCESS");
//HERE IS MY PROBLEM!!!
//what do I do with response object?
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//code
NSLog(@"Oh no failed when trying to get the index");
NSLog(@"%@, %@", [error localizedDescription], [operation responseString]);
}];
В этом разделе я индексирую все узлы и получаю поля от каждого вместо того, чтобы получать всю информацию только от одного узла. Я получаю ответ, который показывает, что все работает правильно, потому что ответ имеет правильную информацию. Я смущен, хотя, потому что я не уверен, что мой объект ответа точно. Это набор узлов, каждый из которых имеет "nid" и "uri", как показано в методе indexObject ниже. Если бы я хотел получить значение "650", например, из моего первого "nid" в области печати ниже, как бы я поступил так? Я не думаю, что могу вызвать "objectForKey", как я это делал в первом рабочем примере, потому что у каждого узла есть "nid". Если я сказал моему приложению искать ключ с именем nid, он не знает, какой искать. Без уникальных ключей, как я могу получить доступ к номеру 650? Я напечатал свой метод indexObject ниже, чтобы вы могли видеть, о чем я говорю.
//printed statement from index method, this is what i am confused about, there are no unique keys how do I access the value 650 or the first nid
{
nid = 650;
uri = "http://www.domain.com/domain_endpoint/node/650";
},
{
nid = 649;
uri = "http://www.domain.com/domain_endpoint/node/649";
},
{
nid = 647;
uri = "http://www.domain.com/domain_endpoint/node/647";
},
1 ответ
Прошло несколько месяцев с тех пор, как вы задавали этот вопрос, поэтому я не уверен, что вы все еще ищете ответ, но на тот случай, если он понадобится кому-то в будущем.
ResponseObject - это массив объектов NSDictionary. Вы можете обращаться к элементам responseObject, как к массиву, и делать с ними все, что вам нужно, в зависимости от того, для чего вам нужны данные.
Например:
NSArray *responseArray = responseObject;
for (NSDictionary *item in responseArray)
{
// Do something with your item here
// For example:
NSString *uriStr = [item valueForKey:@"uri"];
}