2016-08-18 4 views
0

Я пытаюсь присвоить мой NSDictionary моего NSArray но приложение Сбои каждый раз, вот мой код:Попытки присвоить NSDictionary моего NSArray но приложение падает каждый раз

NSDictionary *dict = [[NSDictionary alloc]init]; 
    for (int i=0; i< myMutableArray.count; i++) { 
     dict = [NSDictionary dictionaryWithObjectsAndKeys:[[myMutableArray objectAtIndex:i]xmlhotel_name], @"hotelname", 
        [PriceArray objectAtIndex:i], @"startingfrom", 
        [[myMutableArray objectAtIndex:i]xmlhotel_city],@"city", 
        [DistanceArray objectAtIndex:i],@"distance", 
        [[myMutableArray objectAtIndex:i]xmlhotel_image],@"imagesnames", 
        [[myMutableArray objectAtIndex:i]xmlhotel_stars],@"numberofstars", 
        @"45.5016889",@"hotelLat", 
        @"-73.567256",@"hotelLong", nil]; 
    } 

    NSArray *myArray = @[@{[dict allKeys] : [dict allValues]}]; 

и вот, когда я передаю данные

BookATableController = [self.storyboard instantiateViewControllerWithIdentifier:@"bookatable"]; 
     BookATableController.myMutableArray=[[NSMutableArray alloc]initWithArray:self.rssOutputData];/// Passing Data 
     BookATableController.PriceArray=[[NSMutableArray alloc]initWithArray:rssHotelPrice];/// Passing Data 
     BookATableController.DistanceArray=[[NSMutableArray alloc]initWithArray:rssHotelDistance];/// Passing 
     [self.view addSubview:BookATableController.view]; 
     [self addChildViewController:BookATableController]; 
     [BookATableController didMoveToParentViewController:self]; 
+0

В чем проблема? – Avi

+0

Я попробовал упрощенный пример и не получил сбой. – Avi

+0

*** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [NSNull length]: нераспознанный селектор, отправленный в экземпляр 0x19f0e4490' –

ответ

1

Один словарь не будет работать, потому что ваши ключи в текущем состоянии не уникальны. Два предложения по возможным решениям,

1) Я считаю, что лучше всего создать объект отеля со свойствами, которые вы хотите сохранить, и инициализировать эти объекты в цикле for. Я могу привести пример, если вы захотите.

2) Если вы хотите использовать словарь, вы можете сделать что-то вроде перечисленного ниже, хотя, возможно, есть много других вариантов, которые вы могли бы попробовать.

NSMutableArray *arrayOfHotels = [[NSMutableArray alloc] init]; 
    // 5 is random, you can use the count from 'myMutableArray' 
    for (int i=0; i < 5; i++) { 

     NSArray *columnNames = @[@"hotelname", 
           @"startingfrom", 
           @"city", 
           @"distance", 
           @"imagesnames", 
           @"numberofstars", 
           @"hotelLat", 
           @"hotelLong"]; 

     NSArray *values = @[[[myMutableArray objectAtIndex:i]xmlhotel_name], 
          [PriceArray objectAtIndex:i], 
          [[myMutableArray objectAtIndex:i]xmlhotel_city], 
          [DistanceArray objectAtIndex:i], 
          [[myMutableArray objectAtIndex:i]xmlhotel_image], 
          [[myMutableArray objectAtIndex:i]xmlhotel_stars], 
          @"45.5016889", 
          @"-73.567256"]; 

     [arrayOfHotels addObject:[NSDictionary dictionaryWithObjects:columnNames forKeys:values]]; 
    } 
+0

так как Можно ли использовать arrayOfHotels в качестве NSArray? –

+0

arrayOfHotels - это массив словарей, поэтому [arrayOfHotels objectAtIndex: 0] вернет словарь со всеми подробностями для одного из ваших отелей. Как вы хотите использовать результат? – JingJingTao

+0

после этого изменения Я получаю *** Завершающее приложение из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [NSNull length]: непризнанный селектор, отправленный в экземпляр 0x19f0e4490' –