2010-08-19 5 views
0

bonjour j'ai ce tableau qui compare deux tableaux pour voir si elle contient un objet mais après l'avoir testé avec NSLogtableau erreur de tri cause inconnue

NSLog (@"1"); 
favoritesArray = [[NSMutableArray alloc] init]; 
NSLog (@"2"); 
//Add items 
// favoritesArray = [[NSMutableArray alloc]init]; 

didContain = [[NSMutableArray alloc]init]; 
NSLog (@"3"); 

if ([favoritesArray containsObject:@"one"]) 
{ 
    [didContain addObject:@"one"]; 
    NSLog (@"4"); 
} 

le 4ème journal doesn apparaissent. cela signifie-t-il que mon implémentation est fausse de la si elle contient un objet ou cela signifie qu'il n'y a pas de fichier présent comme ça?

EDIT ici est où j'ajouter un tableau

-(IBAction) addToFavorites { 

favoritesArray = [[NSMutableArray alloc] init]; 
[favoritesArray addObject:@"one"]; 
NSLog (@"hello"); 

comment se présente apparaître comme ne marche pas l'objet @"one"

+0

Il n'y a rien dans ce code qui a quelque chose à voir avec les fichiers. –

+0

J'ai modifié la question –

Répondre

1

Le quatrième journal ne semble pas parce que le tableau ne contient pas l'objet @"one" - le NSLog est dans le test d'instruction if pour ce cas.

Avec le code comme indiqué, c'est correct - le tableau sera vide et il n'est donc pas surprenant qu'il n'y ait pas de @"one".

Vraisemblablement, le vrai code fait quelque chose pour mettre des choses dans le tableau, mais puisque nous ne pouvons pas voir qu'il est difficile de dire quoi que ce soit à ce sujet.

EDIT: Bien que le code que vous avez ajouté à la question addToFavorites semble assez simple, il est toujours pas clair comment il se rapporte au code original. D'où vient-il? Quelle est la séquence des événements? Un problème en particulier est que vous semblez allouer un nouveau tableau dans les deux emplacements. Si tel est le cas, la raison pour laquelle vous ne voyez pas apparaître @"one" est que vous l'ajoutez dans un tableau et que vous le cherchez dans un tableau différent. Le fait qu'ils soient tous deux appelés favoritesArray est accessoire et ne fait que brouiller l'eau. En fait, il est très probable que vous ne devriez pas allouer le tableau dans l'un ou l'autre emplacement, mais juste référencer un tableau qui est alloué seulement une fois ailleurs (par exemple, dans la méthode init de votre classe) et ensuite gardé comme ivar pour la durée de votre application.

+0

J'ai modifié ma question –

+0

@Alx voir la mise à jour ci-dessus. – walkytalky

+0

Ou au moins pour la durée de vie de l'instance de la classe, et libérée lorsque l'instance est désallouée (c'est-à-dire dans la méthode '- (void) dealloc' de la classe). –