Realmente necesito algo de ayuda…

Cuando intento obtener el número de células para la sección con un NSMutableArray, me sale [__NSCFString cuenta]: no reconocidos selector enviado a la instancia 0x6d567e0

Esto sucede cuando uso «rows = [[searchProfile objectAtIndex:sección] count];»

Aquí está el código:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSLog(@"1");
    //_________ Return the number of sections ________
    int sections =  0;

    if (tableView == self.tableView)
    {
        sections = 2;
    }
    if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        sections = [searchedProfile count];
    }
    return sections;
}


/* ------------------------------------------ Set The Number Of Cells for Each Section ------------------------------- */


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"2");

    //_________  Return the number of rows in the section. ________
    int rows = 0;

    if (tableView == self.tableView)
    {
        if (section == 0) {
            rows = userProfile.count;}
        else {
            rows = profiles.count;}
    }

    if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        rows = [[searchedProfile objectAtIndex:section]count];
    }
    return rows;
}

Y el método que se inserta en cadenas «searchedProfile» matriz:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    searchedKeys = [NSMutableArray array];
    searchedProfile = [NSMutableArray array];
    searchedData = [NSMutableDictionary dictionary];

    [searchedProfile removeAllObjects];
    [searchedData removeAllObjects];
    [searchedKeys removeAllObjects];


        NSDictionary *profile;

        for (profile in profiles)
        {
            NSString *birthname;
            NSString *currentname;
            NSString *photopath;
            NSDate *birthdate;

            for (birthname in profile)
            {
                birthname = [profile objectForKey:@"birthname"];
                currentname = [profile objectForKey:@"currentname"];
                photopath = [profile objectForKey:@"profilepic"];
                birthdate = [profile objectForKey:@"birthdate"];
                NSRange nameRange = [birthname rangeOfString:searchString options:NSCaseInsensitiveSearch];

                if (nameRange.location != NSNotFound)
                {
                    [searchedProfile addObject:birthname];
                    [searchedData setObject:birthname forKey:@"birthname"];
                    [searchedData setObject:currentname forKey:@"currentname"];
                    [searchedData setObject:photopath forKey:@"profilepic"];
                    [searchedData setObject:birthdate forKey:@"birthdate"];
                    if ([birthname isEqualToString:[profile objectForKey:@"birthname"]])
                        break;
                }
            }
        }
    NSLog(@"SEARCHED PROFILES: %@", searchedProfile);
    NSLog(@"SEARCHED DATA:%@", searchedData);
    NSLog(@"SEARCHED KEYS:%@", searchedKeys);
    NSLog(@"count test: %d", searchedProfile.count);
    return YES;
}

Gracias !

InformationsquelleAutor Razvan | 2012-09-08

3 Comentarios

  1. 4

    Parece que estás usando el count método para NSArray en un NSString, lo cual no está permitido. Almacenar NSStrings en la matriz searchedProfile, y parece que quieres encontrar la longitud de una cadena. Así que en lugar de este:

        rows = [[searchedProfile objectAtIndex:section] count];

    Hacer esto:

        rows = [[searchedProfile objectAtIndex:section] length];
    • Haciendo que, llena mi vista de la tabla con el mismo resultado en muchas filas en lugar de mostrar un resultado por fila..
    • Lo que quiero hacer es esto: tomar un valor de un NSDictionary, guárdela en una cadena, tienda de la cadena en un NSMutableArray (searchedProfile) el uso de la matriz de índices para mostrar el resultado (la cadena(s) de la matriz) en un formato tableview.
    • si intencionadamente almacenar NSStrings en searchedProfile entonces ¿por qué estás llamando count en ellos? Quiero decir, ¿qué número está tratando de obtener de ellos para calcular el número de filas?
    • Carl está a la derecha. No está claro cuál es el propósito de la llamada ‘contar’ en las cadenas es. Sin la información, es difícil determinar una solución para usted.
    • No, esta respuesta se pierde el punto. Él está llamando en este numberOfRowsInSection, así que, obviamente, quiere el conde de algo, no la longitud de una cadena, sólo que él tiene el «algo mal..
    • Por el contrario, el OP fue originalmente preguntando cómo reparar el error fue llegar, y mi respuesta respuestas. Sin embargo, reconozco que tienes razón en que mi respuesta no correcta la lógica del código, sino que simplemente hace que la semántica y la sintáctica correcciones.
    • Sí la respuesta es correcto para mi pregunta. Pero no me sirve bien. Yo tenía una lógica de falla :D.

  2. 0

    [searchedProfile objectAtIndex:sección] le devuelve la cadena como el objeto en searchedProfile es una cadena, porque esta es la forma u objeto añadido antes de

     [searchedProfile addObject:birthname];

    y contar no es la propiedad definida por NSString. De todos modos, parece que usted quiere devolver el número de objetos(es decir, el número de birthnames almacenados en el searchedProfile matriz ) como el número de filas en la tabla, pruebe este

    rows = [searchedProfile count];

Dejar respuesta

Please enter your comment!
Please enter your name here