使用NSArrays的NSmutableArray的异常

时间:2013-02-19 16:00:27

标签: objective-c cocoa-touch

我正在尝试列出一个列表...但是当我使用[listaCidades count]时...我正在抛出异常(抱歉很长的问题,但我的意思是所有这些方法都与问题相关)

 -(void) preencherCidades  {
for (int iCnt = 0; iCnt < [listaEstados count]; iCnt++) {
    NSString *estado = [listaEstados objectAtIndex:iCnt];
    NSArray *listaNomeCidades = nil;
    NSMutableArray *_listaCidades = [[NSMutableArray alloc]init];
    NSString *path = [[NSBundle mainBundle] pathForResource:estado ofType:@"txt"];
    NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
    listaNomeCidades = [[file componentsSeparatedByString:@"\n"]retain];

    for (int iCnt2 = 0; iCnt2 < [listaNomeCidades count]; iCnt2++) {
        NSArray *listaNomesPrefeitos = nil;
        NSArray *listaPartidosPrefeitos = nil;
        NSArray *listaVereadores = nil;

        NSString *pathNomePrefeitos = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"prefeito-nome-%@",[listaNomeCidades objectAtIndex:iCnt2]] ofType:@"txt"];
        NSString *fileNomePrefeitos = [NSString stringWithContentsOfFile:pathNomePrefeitos encoding:NSUTF8StringEncoding error:NULL];
        listaNomesPrefeitos = [[fileNomePrefeitos componentsSeparatedByString:@"\n"]retain];

        NSString *pathPartidoPrefeitos = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"prefeito-partido-%@",[listaNomeCidades objectAtIndex:iCnt2]] ofType:@"txt"];
        NSString *filePartidoPrefeitos = [NSString stringWithContentsOfFile:pathPartidoPrefeitos encoding:NSUTF8StringEncoding error:NULL];
        listaPartidosPrefeitos = [[filePartidoPrefeitos componentsSeparatedByString:@"\n"]retain];

        NSString *pathVereadores = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"vereadores-%@",[listaNomeCidades objectAtIndex:iCnt2]] ofType:@"txt"];

        NSString *fileVereadores = [NSString stringWithContentsOfFile:pathVereadores encoding:NSUTF8StringEncoding error:NULL];
        listaVereadores = [[fileVereadores componentsSeparatedByString:@"\n"]retain];
        Prefeito *prefeito = nil;
        if([listaNomesPrefeitos count] > 0 && [listaPartidosPrefeitos count]>0)
            prefeito = [[Prefeito alloc]initWithNome:[listaNomesPrefeitos objectAtIndex:0] partido:[listaPartidosPrefeitos objectAtIndex:0] id:iCnt2];
        Cidade *cidade = [[Cidade alloc]initWithNome:[listaNomeCidades objectAtIndex:iCnt2] prefeito:prefeito listaVereadores:listaVereadores id:iCnt2];

        [_listaCidades addObject:cidade];

    }
    [listaCidades addObject:_listaCidades];

}
}

2 个答案:

答案 0 :(得分:1)

通过查看你的答案[Cidade isEqualToString:]:无法识别的选择器到实例0x1cec00。我开始知道这是预期字符串的唯一点,但是你要返回Object。 你解决这个问题很好。快乐的编码。

答案 1 :(得分:0)

我用

解决了这个问题
NSMutableArray *listaCidades2 = (NSMutableArray *)[listaCidades objectAtIndex:indiceEstado];  
Cidade *cidade = (Cidade *)[listaCidades2 objectAtIndex:row];
 return cidade.nome;

而不是:

 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    NSMutableArray *listaCidades2 = (NSMutableArray *)[listaCidades objectAtIndex:indiceEstado]; 
return [listaCidades2 objectAtIndex:row];
 }