2017-05-08 3 views
-1

Ich versuche, ein NSMutableArray in Abhängigkeit davon zu initialisieren, ob eine in NSUserDefaults vorhanden ist oder nicht und if/else-Anweisung.NSMutableArray unbekannt nach der Initialisierung

if ([[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"] == nil) { 
    NSMutableArray *customers = [NSMutableArray arrayWithCapacity:10]; 
} else { 
    NSMutableArray *customers = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"]mutableCopy]; 
} 

Customer *c = [[Customer alloc]init]; 

c.fName = self.fnameTextField.text; 
c.lName = self.lnameTextField.text; 
c.username = self.usernameTextField.text; 
c.balance = [self.depositTextField.text floatValue]; 

[customers addObject:c]; 

[[NSUserDefaults standardUserDefaults] setObject:customers forKey:@"customers"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Beim Versuch, ein Objekt zu dem Array hinzufügen, erhalte ich „Unknown Empfänger der Kunden."“Ich bin nicht sicher, warum ich nicht in der Lage bin das Array zu verwenden.

Antwort

3

Versuchen Sie, die Kunden Array außerhalb Ihrer if-Anweisung erklärt

NSMutableArray *customers; 
if ([[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"] == nil) { 
    customers = [NSMutableArray arrayWithCapacity:10]; 
} else { 
    customers = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"]mutableCopy]; 
} 
2

Ich bin ziemlich sicher, dass Sie es so geschrieben haben,

NSMutableArray *customers; 

if ([[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"] == nil) { 
    NSMutableArray *customers = [NSMutableArray arrayWithCapacity:10]; 
} else { 
    NSMutableArray *customers = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"]mutableCopy]; 
} 

Also, was hier falsch ist?

Beachten Sie, dass, wenn und sonst ihren eigenen Bereich erstellen, so die Variable, die Sie in If deklarieren und andere neue Variable sind, nicht die aus dem äußeren Bereich. Wenn Sie Kunden verwenden, um von äußeren Umfang wollen, tun Sie es so,

NSMutableArray *customers; 

if ([[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"] == nil) { 
    customers = [NSMutableArray arrayWithCapacity:10]; 
} else { 
    customers = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"customers"] mutableCopy]; 
} 

Nun Kunden innerhalb if und else-Block ist die gleiche Variable, die Sie außerhalb des if/else-Block deklariert haben.

+0

Plus 1 für 'Ich bin mir ziemlich sicher ' –

+0

Nun, Sie können es aus dem Code sehen. Er wäre nicht in der Lage, ein Kundenobjekt von außerhalb zu verwenden, wenn es nicht irgendwo außerhalb deklariert wird, wenn es sonst blockiert wird. – Sandeep

+0

Ich glaube nicht, unbekannter Empfänger bedeutet, dass es nirgendwo deklariert ist, es ist ein Kompilierungsfehler, kein Laufzeitfehler – Aris

Verwandte Themen