2010-08-18 9 views
0

comment est-il possible de sauvegarder un tableau dans plusieurs endroits ie. différents contrôleurs de vue afin de sauvegarder les données dans les tableaux et lui permettre d'être utilisé par la suite par une table? modifierenregistrer un tableau

objectif

c j'ai un IBAction avec le code

[[NSMutableArray alloc] init]; 
[favoritesArray addObject: @"one"]; 
//and in the fav table view this code// 
favoritesArray = [[NSMutableArray alloc]init]; 
didContain = [[NSMutableArray alloc]init]; 
if ([favoritesArray contains:@"one"]); 

{ [didContain addObject:@"trial"]; } 

mais son plantage à la partie si ...

+2

Pourrions-nous avoir un contexte ici? – Borealid

+0

J'ai de la difficulté à comprendre ce que vous essayez de faire. quelle langauge? –

+0

objectif c J'ai une ibaction avec le code [[NSMutableArray alloc] init]; [favoritesArray addObject: @ "one"]; et dans la vue de la table des favoris this codefavoritesArray = [[NSMutableArray alloc] init]; didContain = [[NSMutableArray alloc] init]; si ([favoritesArray contient: @ "one"]); { [didContain addObject: @ "trial"]; } cependant son écraser à la partie si ... –

Répondre

1
[[NSMutableArray alloc] init]; 
[favoritesArray addObject: @"one"]; 

Je suppose que vous avez réellement le « favoritesArray = » dans le code d'origine, et tout simplement manqué lors de la copie. Sinon, vous laissez tomber le tableau sur le sol et favoritesArray détient toujours nil.

if ([favoritesArray contains:@"one"]); 

{ [didContain addObject:@"trial"]; } 

mais son qui se brisent à la partie si ...

Il y a deux problèmes avec votre déclaration if:

  1. NSArray ne répond pas à contains:, ce qui est l'accident vous le dit. Vous devez envoyer à votre tableau un message auquel il répond, par exemple containsObject:, répertorié dans la documentation.
  2. Comme je l'ai indiqué lors de la mise en forme que j'ai appliquée à votre code, l'instruction if ne se rapporte pas à l'instruction { [didContain addObject:@"trial"]; } qui la suit. C'est parce que vous mettez un point-virgule après la condition if. Une instruction if ne prend pas un point-virgule entre la condition et l'instruction; l'énoncé doit suivre directement la condition (c.-à-d. être immédiatement après le )). De plus, un point-virgule en lui-même est une déclaration valide et vide.

    Donc, vous avez une déclaration vide sous réserve de la if (si le tableau de favoris contient @"one", ne rien faire), et vous avez la déclaration que vous vouliez dire avoir contrôlé par le if debout sur lui-même, sans condition.

    Découpez le point-virgule après le if afin que le { … } se lie au if au lieu d'être une instruction distincte.

+0

merci le point-virgule et le containsObject l'a corrigé merci –

1

Alx, vous essayez d'accéder aux données à partir de plusieurs objets favouritesArray? C'est ce que je pense que vous essayez de faire, mais sans plus de contexte, il est difficile de proposer une solution. Voici une approche possible:

Déclarez favouritesArray en tant que propriété de votre classe de contrôleur. (Vous pouvez utiliser @property et @synthesize pour y parvenir.)

Ensuite, votre point de vue, ajoutez votre contrôleur comme IBOutlet (appelé, par exemple, myController). Ensuite, établissez des connexions dans Interface Builder entre votre vue et le contrôleur. Vous pourrez ensuite accéder au tableau à partir de vos classes de vues en écrivant:

[[myController favouritesArray] objectAtIndex:3], par exemple.

En général, il est une mauvaise idée de «copier» des données entre différents objets dans votre programme. À moins d'avoir une très bonne raison de le faire, utilisez des références à la place. Essayez de penser à quel objet est le «propriétaire» de ce tableau et placez-le dans cette classe.

Questions connexes