2016-04-14 25 views
1

Kendimi öğretiyorum Objektif C (hala) ve The Big Nerd Ranch Guide kitabına gidiyorum. Hepsini ilk defa okuyun ve şimdi tekrar yapıyorum ama Xcode'ta okuduğum egzersizleri yapıyorum. Yazma plistleri ile ilgili bölüme takılıyorum. Kodu tam olarak kopyaladım ve uyarı yok. Yoluyla ilgili bir şey olduğundan eminim.Bir dosyaya bir dizi yazma

Kodu:

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"]); 

} 

} Bir şey baskı değil

. Mac'imde herhangi bir yerde bulunan stock.plist dosyasını bulamıyorum. Bu, ilk defa dosyaya kaydetmeye çalıştığım için, unuttuğum basit bir şey olabilir. Tx

+0

Gönderdiğiniz kod bir dosyadan okur, yazmaz. Yazı bölümünü gönderir misin? Başımın üst kısmından, dosyayı yazma izniniz olmadığını sanıyorum, ancak kodlara bakmadan söyleyemem. – diatrevolo

cevap

1

Evet, /temp olarak soruna neden yolu bir iOS cihazı veya Mac ya mevcut olmaz ise (eğer devlet yok sorunuzu hangi platform):

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

/tmp olur Muhtemelen çalışması, ancak uygulamanın kendi belge klasörüne yazmak normaldir ve kitabın bunu kapsamamadığına şaşıyorum. Böyle bir şey:

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

OSX altında iOS ve OSX hem çalışmak, ama nereye bulacaksınız uygulama korumalı olup olmadığını bağlıdır.