2012-02-24 2 views
-1

Je dois prendre cette structure de données, un nsmutablearray, et parcourir chaque index et imprimer chaque champ dans un champ de texte. chaque bouton "en avant" incrémente les données avant et "en arrière" remonte. J'ai vraiment du mal à faire fonctionner cela correctement, est-ce que quelqu'un sait ce que je fais mal. Gardez à l'esprit, l'objet tenu dans le tableau, appelé info_holder, est un objet qui contient 3 chaînes et un compteur:Iterate through NS array of obs

#import "ZDViewController.h" 

@implementation ZDViewController 
@synthesize password; 
@synthesize count; 
@synthesize web; 
@synthesize username; 
@synthesize header; 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    info_holder *set1 = [[info_holder alloc] init]; 
    info_holder *set2 = [[info_holder alloc] init]; 
    info_holder *set3 = [[info_holder alloc] init]; 
    info_holder *set4 = [[info_holder alloc] init]; 
    info_holder *set5 = [[info_holder alloc] init]; 
    [set1 SetUser: @"info1"]; //temporary information until big is fixed 
    [set1 SetPass: @"info2"]; 
    [set1 SetKey: @"webinfo1"]; 
    [set1 SetCount: 0]; 
    [set2 SetUser: @"info3"]; 
    [set2 SetPass: @"info4"]; 
    [set2 SetKey: @"webinfo2"]; 
    [set2 SetCount: 0]; 
    [set3 SetUser: @"info5"]; 
    [set3 SetPass: @"info6"]; 
    [set3 SetKey: @"webinfo3"]; 
    [set3 SetCount: 0]; 
    [set4 SetUser: @"info7"]; 
    [set4 SetPass: @"info8"]; 
    [set4 SetKey: @"webinfo4"]; 
    [set4 SetCount: 0]; 
    [set5 SetUser: @"info9"]; 
    [set5 SetPass: @"info10"]; 
    [set5 SetKey: @"Webinfo5"]; 
    [set5 SetCount: 0]; 

} 

- (void)viewDidUnload 
{ 
    [self setHeader:nil]; 
    [self setWeb:nil]; 
    [self setPassword:nil]; 
    [self setCount:nil]; 
    [self setUsername:nil]; 
    [super viewDidUnload]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (IBAction)increment:(id)sender { 
    if([email protected]"test") 
     [email protected]"test2"; 
    else 
     [email protected]"test"; 
    //this should print a new username NSSTRING, wedsite NSTRING, password NSTRING and INEGER counter, heald in the info_holder object, incremented per click backwards 
} 

- (IBAction)decrement:(id)sender { 

} 
- (IBAction)Inc:(id)sender { 

} 
- (IBAction)textFieldDoneEditing:(id)sender { 
    [sender resignFirstResponder]; 
} 
- (IBAction)backgroundTap:(id)sender { 
    [web resignFirstResponder]; 
    [username resignFirstResponder]; 
    [count resignFirstResponder]; 
    [password resignFirstResponder]; 
} 
@end 

et ma principale est:

#import <UIKit/UIKit.h> 

#import "ZDAppDelegate.h" 
#import "info_holder.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 

     return UIApplicationMain(argc, argv, nil, NSStringFromClass([ZDAppDelegate class])); 
    } 
} 
+4

Vous n'avez jamais, jamais besoin de changer votre main.m du tout. –

Répondre

2
- (IBAction)forwards:(id)sender { 
    //this should print a new username NSSTRING, wedsite NSTRING, password NSTRING and INEGER counter, heald in the info_holder object, incremented per click forward 
for(int i=0;i<your_array.count;i++){ 
    username.text=[your_array objectAtIndex:i]; 
    password.text=[your_array objectAtIndex:i]; 
    key.text.text=[your_array objectAtIndex:i]; 


} 
} 

Remarque 1: Je suppose vos noms de texrfield comme username, password et key

Remarque 2: Votre question est trop longue, je pense que personne ne va lire tant de code pour trouver votre question. Partagez juste ce dont vous avez besoin.

+0

c'est le problème exact, il me donne une erreur en disant que your_array, qui s'appelle logins dans mon cas, n'est pas déclaré mais je l'ai déclaré quelques lignes plus haut. plus, l'objet à l'index i du tableau aura un objet info_holder, et info_holder aura 3 champs de texte (nom d'utilisateur, mot de passe et clé) et un entier (compteur) le problème référencera correctement chaque chaîne de l'objet dans le tableau –

+2

ligne dans votre exemple de code ci-dessus obtenez-vous les erreurs de connexion n'est pas déclaré? Parce que je vois que vous déclarez des connexions dans votre méthode 'viewDidLoad'. Vous ne pouvez pas accéder aux connexions de n'importe où sauf cette méthode. Si vous essayez d'accéder à des logins à partir de la méthode forwards:, vous devez faire des logins une propriété de la classe. – dbrajkovic

+0

c'est exactement ce dont j'ai besoin d'aide. mais comment je fais ça. Je suis un débutant et je pourrais vraiment utiliser de l'aide –

1

D'abord, les noms de classe devrait commencer Les noms de majuscules et de méthodes doivent commencer en minuscules. Deuxièmement, vos setters dans la classe info_holder (qui devrait être InfoHolder) ont des problèmes potentiels.

un setter exemple devrait ressembler à:

- (void)setUser:(NSString *)username 
{  
    [username retain]; 
    [uname release]; 
    uname=username;  
} 

Vous n'avez pas dit ce qui ne fonctionne pas, mais un problème est que vous n'êtes pas conserver ces chaînes.

BASE SUR LES COMMENTAIRES Vous devez déclarer une connexion aux propriétés.

dans ZDViewController.h

@interface ZDViewController : UIViewController 

@property (strong, nonatomic) NSMutableArray *logins; 

Puis, en ZDViewController.m

@implementation ZDViewController 

@synthesize logins; 
. 
. 
. 

- (void)viewDidLoad { 
logins = [NSMutableArray array]; 
. 
. 
. 
} 

vous pouvez accéder self.logins partout dans votre classe

+0

en utilisant le comptage automatique des références. merci si –

+0

merci beaucoup –

+0

Si j'ai répondu à votre question, s'il vous plaît accepter la réponse. – dbrajkovic

0

avez-vous enregistré vos objets info_holder dans l'instance NSMutableArray, le cas échéant, vous pouvez accéder à l'élément (information des instances de support dans votre cas) d'un tableau mutable par l'un de la méthode ci-dessous,
for(ClassName *tmp in _arrayName){ tmp.property1;tmp.property2;..... }
ou si vous le voulez comme spécifique à l'indice
for(int index=0;index<[_arrayName count];index++){ ClassName *tmp = [_arrayName objectAtIndex:index];tmp.property1;tmp.property2;.....}
. Je ne peux vraiment pas comprendre votre problème, mais de vos écrits, je suppose que vous pouvez être la solution. Si ce n'est pas le cas, faites-moi savoir votre question, si cela vous a certainement aidé à accepter la réponse. Comme le suggère @dbrajkovic, suivez toujours la convention de nommage de vos programmes, qui offre une lisibilité plus flexible.