2016-04-14 202 views
1

我在教學自己目標C(仍然),我將與書大書呆子牧場指南。第一次閱讀所有內容,現在我再次做,但在閱讀Xcode時進行練習。 我正陷在寫plists的章節上。我已經完全複製了代碼並且沒有任何警告。我相信這是與路徑有關的。將數組寫入文件

代碼:

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

} 

}

這不是什麼打印。我無法在我的Mac中的任何位置找到文件stock.plist。這是我第一次嘗試保存到文件,所以它可能是簡單的我忘記了? TX

+0

您發佈的代碼從文件中讀取,不會寫入它。你可以發表寫作部分?關於我的頭頂,我懷疑你沒有寫文件的權限,但是不看代碼就不能說。 – diatrevolo

回答

1

是的,這是造成問題,因爲/temp路徑也不會在iOS設備或Mac上存在(你不說明什麼平臺你的問題):

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

/tmp可能工作,但寫入應用程序自己的文檔文件夾是正常的,我很驚訝這本書不包括這一點。事情是這樣的:

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

這將OSX下的iOS和OSX工作,但在那裏你會發現這將取決於如果應用程序是沙箱或不是。