JSON данные выпуска iPhone - PullRequest
0 голосов
/ 13 января 2012

Я получаю эти данные из веб-служб JSON

[{"identity":"DEMO","assets":[{"identity":"34DL3611","systemId":"544507"},{"identity":"34GF0512","systemId":"5290211"},{"identity":"34HH1734","systemId":"111463609"},{"identity":"34HH1736","systemId":"111463622"},{"identity":"34YCJ15","systemId":"294151155"}],"systemId":4921244}]

Я использую этот метод для получения значений активов для удостоверения ("assets": [{"identity": "34DL3611", "systemId ":" 544507 "}):

 vehicleList = [dict objectForKey: @"assets"];

    self.listVehicles = [[NSMutableArray alloc] init];

for (NSUInteger index = 0; index < [vehicleList count]; index++) {

    itemDict = [vehicleList objectAtIndex: index];

    [self.listVehicles addObject:[itemDict objectForKey:@"identity"]];
}

как мне получить значения systemId ...?

Я пробовал это для systemId

vehicleListID = [dict objectForKey:@"systemId"];

    self.listVehiclesID =[[NSMutableArray alloc]init];

for (NSUInteger index = 0; index < [vehicleListID count]; index++) {

    assetsIdDict = [vehicleListID objectAtIndex: index];

    [self.listVehiclesID addObject:[assetsIdDict objectForKey:@"systemId"]];
}

но получая ошибку: [__NSCFNumber count]: нераспознанный селектор отправлен на экземпляр 0x784c730

Ответы [ 3 ]

2 голосов
/ 13 января 2012

Ты в основном почти там. Вы просто хотите это, вероятно:

NSString *systemId = [itemDict objectForKey:@"systemId"];

В отношении этого кода у вас есть:

vehicleListID = [dict objectForKey:@"systemId"];

    self.listVehiclesID =[[NSMutableArray alloc]init];

for (NSUInteger index = 0; index < [vehicleListID count]; index++) {

    assetsIdDict = [vehicleListID objectAtIndex: index];

    [self.listVehiclesID addObject:[assetsIdDict objectForKey:@"systemId"]];
}

... ну, это просто неправильно. Это возвращает NSNumber, который в вашем примере JSON 4921244 прямо в конце строки JSON. Затем вы вызываете count, но это не массив, поэтому он вылетает.

Если вы хотите получить все значения из этого JSON, вы можете использовать это:

NSNumber *outerIdentity = [dict objectForKey:@"identity"];
NSNumber *outerSystemId = [dict objectForKey:@"systemId"];
NSArray *vehicleList = [dict objectForKey:@"assets"];
for (NSUInteger index = 0; index < [vehicleList count]; index++) {
    NSDictionary *itemDict = [vehicleList objectAtIndex: index];
    NSString *identity = [itemDict objectForKey:@"identity"];
    NSString *systemId = [itemDict objectForKey:@"systemId"];
}

Тогда делай, что хочешь, со всеми этими объектами.

0 голосов
/ 13 января 2012

Для того, чтобы иметь отдельный массив, вам нужно инициализировать новый NSMutableArray и добавить объекты.

Иначе лучше объявить новый класс с 2 членами NSString, скажем, identity и systemId. Извлеките значения из JSON и присвойте членам класса. И добавьте этот объект в массив.

0 голосов
/ 13 января 2012

Ответ json, который вы получаете, является массивом.vehicleList должен быть objectatIndex 0 ответа json.

    NSDictionary  *vehicleList = [[arrayLoadedFromJson objectAtIndex:0] objectForKey: @"assets"];


vehicleList = [dict objectForKey: @"assets"];

    self.listVehicles = [[NSMutableArray alloc] init];

for (NSUInteger index = 0; index < [vehicleList count]; index++) {

    itemDict = [vehicleList objectAtIndex: index];

    [self.listVehicles addObject:[itemDict objectForKey:@"identity"]];

    [self.listVehicles addObject:[itemDict objectForKey:@"systemId"]];

}

Это вы должны вставить: -в вашем коде

  [self.listVehicles addObject:[itemDict objectForKey:@"systemId"]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...