2016-04-14 1 views
0

Я получение данных (thirdLink) из моей базы данных с помощью следующего кода:Извлечение данных из поля базы данных, завершение с неперехваченным исключением типа NSException?

NSMutableDictionary *viewParamsDogs = [NSMutableDictionary new]; 
    [viewParamsDogs setValue:@"mydogs" forKey:@"view_name"]; 
    [DIOSView viewGet:viewParamsDogs success:^(AFHTTPRequestOperation *operation, id responseObject) { 


     //DOG PHOTO 


     self.dogData = [responseObject mutableCopy]; 

     NSDictionary *dic = [responseObject valueForKey: @"field_pet_photo_path"]; 
          NSArray *arr = [dic valueForKey: @"und"]; 
          NSDictionary *dic2= [arr objectAtIndex : 0]; 
          NSString *path = [dic2 valueForKey: @"safe_value"]; 


    if([path length]>0) { 

      NSString *ImageURL = path; 
      NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]]; 

      self.dogimageView.image = [[UIImage alloc] initWithData:imageData]; 

     } else { 

      NSString *ImageURL = @"paw.png"; 
      NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]]; 
      self.dogimageView.image = [UIImage imageWithData:imageData]; 
     } 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Failure: %@", [error localizedDescription]); 
    }]; 

Поле заполняется и данные возвращаются, но эта линия бросает мне следующую ошибку:

NSString *thirdLink = responseObject[@"field_pet_photo_path"][@"und"][0][@"safe_value"]; 

[__NSCFArray objectForKeyedSubscript:]: unrecognized selector sent to instance 0x149857d40 terminating with uncaught exception of type NSException

Кто-нибудь знает, как я должен писать эту строку, чтобы должным образом захватить возвращаемые данные (url) в field_pet_photo_path? См вернулся данные ниже:

"field_pet_photo_path" =   { 
      und =    (
           { 
        format = "<null>"; 
        "safe_value" = "/files/stored/1460652721.jpg"; 
        value = "/files/stored/1460652721.jpg"; 
       } 
      ); 
     };  
+0

Один из этих словарей, по сути, является массивом. Поместите точку останова на строку 'self.dogData' и посмотрите на нее в отладчике. – trojanfoe

+0

@trojanfoe Я так понял, я просто не уверен, как изменить, как писать эту строку кода? –

+0

Зависит от структуры данных. – trojanfoe

ответ

0
NSDictionary *dic = [responseObject valueForkey : @"field_pet_photo_path]; 
NSArray *arr = [dic valueForkey : @"und"]; 
NSDictionary *dic2= [arr objectAtIndex : 0]; 
NSString *path = [dic2 valueForkey : @"safe_value"]; 

Если требуется имя ключа или ключ строки с кавычками затем использовать как, @"\"safe_value\""

Надеется, что это поможет :)

Update:

Попробуйте заменить NSString *path = [dic2 valueForkey : @"safe_value"]; на

NSString* path = [NSString stringWithFormat:@"%@", [dic2 valueForkey : @"safe_value"]];

+0

Пробовал это (см. Выше редактирование кода), хотя теперь я получаю эту ошибку: Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [__ NSArrayI length]: непризнанный селектор отправлен в экземпляр 0x14901bea0' В строке: if ([ длина пути]> 0) { –

+0

Я также зарегистрировал путь, и я получаю результат, который я ищу ... поэтому не знаю, почему происходит ошибка. например. Это путь ( «http://myurl.com/files/stored/1460655708.jpg» ) –

+0

Так в чем проблема? вы получили результат, какой хотите. – Lion

 Смежные вопросы

  • Нет связанных вопросов^_^