iOS 5 Проблемы с преобразованием NSDictionary в NSMutableArray? - PullRequest
0 голосов
/ 01 марта 2012

Я создаю приложение IPOD, и у меня есть NSDictionary, который я создал из фида JSON.Я пытаюсь преобразовать это в NSMutableArray.Я знаю, что мне нужно перебрать словарь и записать ключи и значения в массив, но у меня проблемы с кодом.Вот что для этого нужно.

//// Получить данные JSON с веб-сайта NSError * error;NSDictionary * json = [NSJSONSerialization JSONObjectWithData: параметры данных: kNilOptions error: & error];

////// convert the dictionary to an NSMutableArray
// create an empty array of size equal to the number of json records
NSMutableArray *users = [[NSMutableArray alloc] initWithCapacity:1];                           
//  Begin filling the array
NSInteger dCount = [json count];

for(int i=0; i <  dCount; i++)
{
    User *user = [[User alloc] init];
    user.emailAddress = [json objectForKey: @"emailAddress"];
    user.password = [json objectForKey: @"password"];
    user.password = [json objectForKey: @"password"];
    [users addObject:user];
    NSLog(@"This is record: %@", i);

}

Заранее спасибо.

1 Ответ

0 голосов
/ 03 марта 2012

Ладно, возможно, это не самое элегантное решение, но с большой помощью я придумал:

//////////////// Сборка массива пользователей на сервисе dispatch_queue_t bgQueue = dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async (bgQueue, ^ {

////// Building users list
//Get the data from the webserver 
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://msis-discussion-forum.appspot.com/users"]];

NSLog(@"Beginning to build array");
////   Get the JSON data from the website
NSError* error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"This is my JSON data %@", json);
usersArray =[[NSMutableArray alloc]init];
NSArray *userJSONObjects = [json objectForKey:@"users"];
for (User *tempUser in userJSONObjects)
{
    User *user = [[User alloc] init];
    user.displayName = [tempUser valueForKey:@"displayName"];
    NSLog(@"%@",user.displayName);
    user.emailAddress = [tempUser valueForKey:@"emailAddress"];
    NSLog(@"%@",user.emailAddress);
    user.password = [tempUser valueForKey: @"password"];
    NSLog(@"%@",user.password);
    [usersArray addObject:user];
} 
 }); 

Надеюсь, это поможет.

...