essayez d'insérer néant objet à partir d'objets[0]?
Dans mon application j'ai un UITableView et quelques boutons que l'utilisateur peut cliquer pour trier le tableau de l'ordre fondé sur un NSDate ou de l'ints. Donc, c'est ma méthode pour essayer de faire le tri dans mes UITableView:
- (void)sortStats:(id)sender reloadData:(BOOL)dataBool {
NSSortDescriptor *descriptor = nil;
UIButton *clickedButton = (UIButton*)sender;
if (clickedButton.tag == 1) {
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:NO];
}
[self.cellArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
[[NSUserDefaults standardUserDefaults] setObject:self.cellArray forKey:@"cellArray"];
if (dataBool) {
[ivstatstableView reloadData];
}
[ivstatstableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
}
Donc, à l'origine, j'ai juste eu cette méthode sans reloadData paramètre car il semblait que reloadData sur la UITableView était à l'origine du crash.
C'est ce que la console de crash est:
Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '*** -[__NSPlaceholderArray initWithObjects:count:]: essayez d'insérer néant objet à partir d'objets[0]'
Est de toute façon il y a tout le code ici qui serait à l'origine de ce crash? Je veux vraiment obtenir cette fonctionnalité travaille dans mon application et je sais que je suis proche de fixation, mais je suis tout simplement pas sûr de ce qui est à l'origine de ce problème.
Des idées?
Vous devez vous connecter pour publier un commentaire.
Il y a au moins un endroit où cela pourrait se produire, et peut-être d'autres. Dans le code où vous obtenez le contenu de l'utilisateur par défaut, vous ne recherchez pas d'
nil
. Ainsi, au lieu de cela:vous voudrez peut-être essayer ceci:
Il est également possible que le
initWithObjects
qui est défaillant (en fonction de votre message d'erreur) est imbriqué dans un autre appel, peut-être dans le présent appel:Si vous regardez l'intégralité de la pile des appels, il vous dira si cet appel est de faire des appels ultérieurs à
initWithObjects
et, éventuellement, en passant unnil
. Dans votre cas, par exemple, que vous devez passer dans unnil
yo la matrice de la création siclickedButton.tag
n'a pas encore été définie à une valeur de 1 ou 2. Vous pourriez ajouter une clause else pour aider à diagnostiquer le problème:Tout ceci est assez compliqué, mais une chose reste:
Je pense que vous devriez changement ce:
Deuxièmement, ajouter le prétend() après chaque endroit où vous pensez que vous devriez avoir un objet, c'est à dire:
Vous dire aussi que le nombre de lignes est le double de la cellArray comte, suppose que c'est intentionnel.