почему приложение падает при получении данных из словаря? - PullRequest
0 голосов
/ 21 марта 2012

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

-[UIDeviceRGBColor objectAtIndex:]: unrecognized selector sent to instance 0x68c22d0

или

[UIControlTargetAction count]: unrecognized selector sent to instance 0x68683d0

или

   0 : <CFString 0x687cb30 [0x124eb38]>{contents = "dish1"} = UIDeviceWhiteColorSpace 0 0.5

мой код такой

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == menuTableView) {

        [optionsView addSubview:topScrollView];
        optionFlag=NO;
        [self optionScreenMethod:indexPath.row];
        NSString *dishSelect=[NSString stringWithFormat:@"dish%d",indexPath.row];
        NSMutableArray *dishesArray=[[NSMutableArray alloc]init];
        NSMutableArray *dishDicArray=[[NSMutableArray alloc]init];
        dishesArray=[dishDictionary objectForKey:dishSelect];
        NSLog(@"%d",[dishesArray count]);
        if ([dishesArray count]>0) {
            optionFlag=YES;
        }else{
            for (int i=0; i<[tempStr intValue]; i++) {
                DishData *dishData=[[DishData alloc]init];
                dishData.dishTitle=(NSMutableString*)[[tableMenuArray objectAtIndex:indexPath.row] itemName];
                dishData.accompArrayIndex=nil;
                dishData.cookArrayIndex=nil;
                dishData.dishComent=nil;
                dishData.nonMandArray=nil;
                [dishDicArray addObject:dishData];
            }
            [dishDictionary setObject:dishDicArray forKey:dishSelect];
        }
        //[dishesArray release];
        //[dishDicArray release];
        dishSelectRow=indexPath.row;
      //  NSString *dishSelect=[NSString stringWithFormat:@"dish%d",indexPath.row];
        
        [isSelected removeAllObjects];
        [isSelectedAccompArray removeAllObjects];
        [isSelectedCookArray removeAllObjects];
        [self defaultDataArray];
        [accompmentTblView reloadData];
        [cookingTblView reloadData];
        [nonMandTblView reloadData];
        [nonMandtSelectOptionArray removeAllObjects];

        optionsView.hidden=NO;

    }

1 Ответ

0 голосов
/ 21 марта 2012
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

       //If possible make a singleton instance here of "dishDictionary" may solve your issue of crashing (Rather diclare it at the class level)
      //if(!dishDictionary)
          dishDictionary=[[NSMutableDictionary alloc]init];

      ..........

      //Replace this line :
      NSMutableArray *dishDicArray=[[NSMutableArray alloc]init];

      to

      NSMutableArray *dishesArray=[[NSMutableArray alloc]initWithArray:[dishDictionary objectForKey:dishSelect]];

      and remove
      dishesArray=[dishDictionary objectForKey:dishSelect];

      ..........
      //may will not crash than try this
}
...