Как мне работать с моим объектом ответа, который соответствует идентификаторам узлов?

Редактировать формулировку..

Я использую стороннюю библиотеку под названием 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"]; 
}
Другие вопросы по тегам