2016-04-21 3 views
0

Я пытаюсь передать dogData с моего ViewController на PetViewController (через модальный переход). Тем не менее, по какой-то причине, когда я пытаюсь передать dogData (NSMutableArray), я получаю эту ошибку:Передача данных через modal segue: [__NSArrayI length]: непризнанный селектор, отправленный в экземпляр

[__NSArrayI length]: unrecognized selector sent to instance

Любая идея, почему это может быть? См. Приведенный ниже код (надеюсь, что это достаточно информации, попытался обрезать его).

ViewController.h

@property (strong, nonatomic) NSMutableArray *dogData; 

ViewController.m

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


     self.dogData = [responseObject mutableCopy]; 
     NSLog(@"This is the dog photo data %@", self.dogData); 

     [operation responseString]; 


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


     NSMutableCharacterSet *characterSetToTrim = [NSMutableCharacterSet characterSetWithCharactersInString:@"()\""]; 
     [characterSetToTrim formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

     path = [path stringByTrimmingCharactersInSet:characterSetToTrim]; 



    if([path length]>0) { 



     NSURL *url = [NSURL URLWithString:path]; 

     NSData *data = [NSData dataWithContentsOfURL:url]; 
     UIImage *image = [UIImage imageWithData:data]; 
     self.dogimageView.image = image; 


     } else { 

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


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



     - (IBAction)openPetProfile:(id)sender { 

      PetViewController *petProfile = [[PetViewController alloc] init]; 
      petProfile.petSubDetail = self.dogData; 
      [self presentViewController:petProfile animated:YES completion:nil]; 

     } 

PetViewController.h

@property (nonatomic, copy) NSMutableArray *petSubDetail; 
@property (weak, nonatomic) IBOutlet UILabel *petName; 

PetViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 

     self.petName.text = [self.petSubDetail valueForKey:@"petname"]; 


} 

Выходные данные:

"field_petname" =   { 
     und =    (
          { 
       format = "<null>"; 
       "safe_value" = Pebbles; 
       value = Pebbles; 
      } 
     ); 
    }; 
+1

Почему вы вызываете 'valueForKey:' 'в массиве? Это возвращает вам еще один массив. – rmaddy

+0

@rmaddy должен ли я использовать objectForKey (я думал, что использовал это для словарей)? Извините за newb Q. Чем это должно быть? –

+0

Вам нужно прояснить, что вы хотите от массива. Вам нужно уточнить, что находится в массиве. Вы правы, 'objectForKey' для словарей. Кажется, вы хотите получить какой-то заголовок из массива. Но где в массиве есть название, которое вы хотите? – rmaddy

ответ

0

Ваш код должен быть, как

NSdictionary *dict = [self.petSubDetail objectForKey:@"field_petname"]; 
NSArray *arr = [dict objectForKey:@"und"]; 
NSdictionary *dict1 = [arr objectAtIndex : 0]; 
self.petName.text = [dict1 valueForKey:@"value"]; 

, где вам нужно " в ключевых использования \" надеюсь, что это help :)

+0

Эта строка не работает: NSDictionary * dict = [self.petSubDetail objectForKey: @ "field_petname"]; Ошибка: No visible @interface для NSMutableArray объявляет селектор objectForKey –

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

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