2016-04-14 29 views
1

私はObjective C(まだ)を教えています。私はThe Big Nerd Ranch Guideという本を使っています。私はそれを読んでいるので、最初からすべてを読んで、もう一度やっていますが、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の両方で動作しますが、どこで見つけるアプリがサンドボックス化されているかどうかに依存します。