Как извлечь строку из массива в формате JSON в iPhone? - PullRequest
0 голосов
/ 29 июля 2011

Я использовал веб-сервис и получаю ответ в виде JSON. Я хочу извлечь детали из массива.

Вот мой пример кода,

    NSString *urlDataString = [[NSString alloc] initWithData:receiveData encoding:NSUTF8StringEncoding];
    SBJSON *parser = [[SBJSON alloc] init];
    NSError *error = nil;
    self.customArray = [parser objectWithString:urlDataString error:&error];

    for (NSDictionary *feedItem in customArray)
    {        
        NSString *listDeals = [feedItem objectForKey:@"ListOfDeals"];
        [tempArray addObject:listDeals];
    }

Если я использовал приведенный выше код, все строки сохраняются во временном массиве и значении массива 1. Но я хочу сохранить данные, которые должны быть отдельным индексом. Так что я должен получить детали, используя позицию индекса .

если я так использую,

for (NSDictionary *feedItem in self.dollarArray)
    {        
        NSString *listDeals = [[feedItem objectForKey:@"ListOfDeals"] valueForKey:@"Description"];
        [tempArray addObject:listDeals];
    }

Я получаю все значения описания из tempArray, но я хочу получить все строки из массива.

На самом деле я ожидаю, что значение временного массива равно 3, и хочу получить такие значения, как

 NSLog(@"%@",[tempArray ObjectAtIndex:0]);

           {
                    BusId = 14;
                    Description = "Sample data"
                    Id = 60;
                    StartTime = "7/28/2011 8:30:00 PM";
                },

Вот мой пример ответа,

 (
            ListOfDetails =         (
                            {
                    BusId = 14;
                    Description = "Sample data"
                    Id = 60;
                    StartTime = "7/28/2011 8:30:00 PM";
                },
                            {
                     BusId = 16;
                    Description = "Test data"
                    Id = 62;
                    StartTime = "7/29/2011 8:30:00 PM";
                },
                            {
                     BusId = 15;
                    Description = "Test"
                    Id = 61;
                    StartTime = "7/27/2011 8:30:00 PM";
                },
      )

Так как я могу это сделать? Пожалуйста, ведите меня.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 июля 2011
for (NSDictionary *feedItem in self.dollarArray){

    for (NSMutableArray *vijayTemp in [feedItem objectForKey:@"ListOfDeals"]) {

        [tempArray addObject:vijayTemp];

    }

 }
1 голос
/ 29 июля 2011
for (NSDictionary *feedItem in self.dollarArray)
    {        
      NSDictionary *listDeals = [[feedItem objectForKey:@"ListOfDeals"] valueForKey:@"Description"];
     [tempArray addObject:listDeals]; // Gets description
     listDeals = [[feedItem objectForKey:@"ListOfDeals"] valueForKey:@"BusId"];
     [tempArray addObject:listDeals]; // Gets BusId
     listDeals = [[feedItem objectForKey:@"ListOfDeals"] valueForKey:@"Id"];
     [tempArray addObject:listDeals]; // Gets Id
     listDeals = [[feedItem objectForKey:@"ListOfDeals"] valueForKey:@"StartTime"];
     [tempArray addObject:listDeals]; // Gets StartTime

    }

В качестве альтернативы вы можете использовать возврат из [feedItem objectForKey:@"ListOfDeals"], который является словарем для всех 4 значений. Вы можете сохранить их, как указано выше, или распечатать их, используя NSLog и спецификатор формата %@.

Edit:

Вы можете создать массив из словаря, используя метод allvalues. Я думаю, это должно ответить на ваш вопрос.

NSArray *tempArray = [dictionary allvalues];


allValues
Returns a new array containing the dictionary’s values.

- (NSArray *)allValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...