2016-09-17 6 views
0

Ich versuche, Daten zu plist hinzufügen, aber ich konnte nicht, lassen Sie uns sagen, was ich tue:Speichern von Daten in Plist mit iOS

Werfen Sie einen Blick auf meine plist:

enter image description here

Mal sehen meinen Code, habe ich 2 Arrays:

@property NSMutableArray *nameArr; 
@property NSMutableArray *countryArr; 

Hier ist der Code, wo ich die Daten speichern:

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsPath = [paths objectAtIndex:0]; 
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 

[self.nameArr addObject:self.theName.text]; 
[self.countryArr addObject:self.cellPhone.text]; 

NSDictionary *plistDict = [[NSDictionary alloc] initWithObjects: [NSArray arrayWithObjects: self.nameArr, self.countryArr, nil] forKeys:[NSArray arrayWithObjects: @"city", @"state", nil]]; 

NSString *error = nil; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; 

if(plistData) 
{ 
    [plistData writeToFile:plistPath atomically:YES]; 
    NSLog(@"Data Saved"); 

} 
else 
{ 
    NSLog(@"Data not saved"); 

} 

Das Bild unten zeigt den Fehler, die App zu beenden, aber ich weiß nicht, wo das Problem ist.

enter image description here

+0

Ihre Plist Daten Setup sieht alles falsch. plist sollte ein Wörterbuch mit mehreren Arrays enthalten und jedes dieser Arrays sollte jeweils einen Schlüsselwert haben. –

+1

Haben Sie diesen Code kopiert und eingefügt oder wissen Sie, was passiert ist? –

+0

Ich habe einige kopiert und geändert, ich bin nicht gut mit plist. In der gleichen Zeit kann ich Daten aus dem gleichen Plist in einer Tabellenansicht abrufen –

Antwort

1

Wahrscheinlich sind die Array-Eigenschaften deklariert, aber nie initialisiert.

Sie haben irgendwo

nameArr = [[NSMutableArray alloc] init]; 
countryArr = [[NSMutableArray alloc] init]; 

vor der Verwendung hinzuzufügen.

In Bezug auf die Warnung verwenden Sie die vom Compiler vorgeschlagene Methode.