2016-04-14 12 views
1

Ich unterrichte mich selbst Ziel C (noch) und ich gehe mit dem Buch The Big Nerd Ranch Guide. Lesen Sie alles durch ein erstes Mal und jetzt mache ich es wieder, aber mache die Übungen auf Xcode, während ich es lese. Ich bleibe bei dem Kapitel über das Schreiben von Plisten stecken. Ich habe den Code genau und keine Warnungen kopiert. Ich bin mir sicher, dass es etwas mit dem Weg zu tun hat.ein Array in eine Datei schreiben

Code:

NSMutableArray *stocks = [[NSMutableArray alloc]init]; 
    NSMutableDictionary *stock = [NSMutableDictionary dictionary]; 
    [stock setObject:@"APPL" forKey:@"symbol"]; 
    [stock setObject:[NSNumber numberWithInt:200] forKey:@"shares"]; 
    [stocks addObject:stock]; 

    stock = [NSMutableDictionary dictionary]; 
    [stock setObject:@"GOOG" forKey:@"symbol"]; 
    [stock setObject:[NSNumber numberWithInt:160] forKey:@"shares"]; 
    [stocks addObject:stock]; 

    [stocks writeToFile:@"/temp/stocks.plist" atomically:YES]; 

    NSArray *stocklist = [NSArray arrayWithContentsOfFile:@"/temp/stocks.plist"]; 

    for (NSDictionary *d in stocklist){ 
    NSLog(@"I have %@ shares of %@", [d objectForKey:@"shares"],[d objectForKey:@"symbol"]); 

} 

}

Es ist nicht alles drucken. Ich finde die Datei stock.plist nirgendwo auf meinem Mac. Dies ist das erste Mal, dass ich versuche, in Datei zu speichern, also kann es etwas einfaches sein, das ich vergesse?

Tx
+0

Der Code, den Sie gepostet haben, liest aus einer Datei, schreibt nicht darauf. Kannst du den Schreibabschnitt schreiben? Ich vermute, dass Sie nicht die Erlaubnis haben, die Datei zu schreiben, aber ich kann nicht sagen, ohne den Code zu betrachten. – diatrevolo

Antwort

1

Ja, es ist der Weg, um das Problem als /temp verursacht nicht auf existiert entweder ein iOS-Gerät oder einen Mac (Sie sagen, nicht das, was Plattform in Ihrer Frage):

[stocks writeToFile:@"/temp/stocks.plist" atomically:YES]; 

/tmp würde wahrscheinlich Arbeit, aber es ist normal, in den eigenen Dokumentenordner der App zu schreiben, und ich bin überrascht, dass das Buch dies nicht abdeckt. Etwas wie folgt aus:

NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fullpath = [documentsFolder stringByAppendingPathComponent:@"stocks.plist"]; 
[stocks writeToFile:fullpath atomically:YES]; 

, die sowohl auf iOS und OS X funktionieren wird, aber wo Sie es unter OSX finden wird davon abhängen, ob die App Sandbox ist oder nicht.