Question

J'ai un problème avec vue sur la table iphone .. je ne peux pas comprendre pourquoi il se bloque à chaque fois sera ici est le code

   - (void)viewDidLoad
{
     [self checkAndCreatePList];
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:pListPath];

    self.animals = [plistDict objectForKey:@"Animals"];



         [super viewDidLoad];

}



    -(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath
{
    static NSString *SimpleTableIdentifier =@"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if(cell== nil){
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier]autorelease];
    }
    NSUInteger row = [indexPath row];

    cell.textLabel.text = [animals objectAtIndex:row];

    return cell;
}

il est plantages à la ligne cell.textLabel.text = [objectAtIndex animaux: ligne]; et me dit que Mettre fin à l'application du fait exception uncaught 'NSInvalidArgumentException', raison: « - [__ NSCFDictionary objectAtIndex:]: sélecteur non reconnu envoyé à l'instance

Était-ce utile?

La solution

La touche Animals dans votre plist fait référence à un dictionnaire, pas un tableau. Les dictionnaires ne sont pas un ordre garanti, pour demander un objet à un index particulier n'a pas de sens.

En plus de cela, vous avez une fuite de mémoire - plistDict est allouée, mais jamais sorti. Avez-vous exécutez l'analyseur statique sur votre code?

Autres conseils

[plistDict objectForKey:@"Animals"];

retourne un dictionnaire pas un tableau comme vous attendez. Vous devez vérifier votre fichier plist pour voir si les données sont correctes.

l'erreur semble que vous appelez objectAtIndex sur un objet NSDictionary à la ligne cell.textLabel.text = [animaux objectAtIndex: ligne]; vérifier ce que fait l'animal contient au moment de l'exécution. Pour cette utilisation NSLog avant cette ligne. NSLog (@ "% @", animaux);

On dirait animals est une dictionary et vous appelez méthode objectAtIndex: sur elle. objectAtIndex:. est la méthode de NSArray

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top