2013-07-02 76 views
1

我想將一個變量保存到硬盤中,以便在我的應用程序啓動時加載它。我做了以下:我還需要將變量保存到光盤中嗎?

paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
documentsDirectory = [paths objectAtIndex:0]; 
votesFile = [documentsDirectory stringByAppendingPathComponent:@"votes.dat"]; 

但是,這是創建沒有文件,至少我可以看到。當我嘗試這樣做:

[votes writeToFile:votesFile atomically:YES]; //votes!=nil 

然後

votes = [[NSMutableDictionary alloc] initWithContentsOfFile: votesFile]; 

它什麼也不做對我來說,票==零

缺少什麼我在這裏?

+3

什麼是「票」? –

+0

這是一個NSMutableDictionary – EBM

+1

它是否只包含有效的屬性列表對象[文檔說是必需](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference /Reference.html)? –

回答

1

如果您使用的NSDictionary的NSString作爲鍵,NSNumbers作爲值,這些類與存檔和取消存檔模式兼容,因此您可以使用NSUserDefaults存儲數據,並在下次運行應用程序時加載它。

要保存的數據:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:yourVotesDictionary forKey:aKey]; 
[defaults synchronize]; //This is very important when you finish saving all your data. 

要加載數據:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableDictionary *votes = [defaults objectForKey:yourNSString]; 

正如你所看到的,是NSUserDefaults的一個字典,它的行爲類似。

希望它有幫助, 有一個美好的一天。

1

使用writeToFile可能會出現各種錯誤:atomically:這就是爲什麼它會返回BOOL。你應該有這樣的事情:

if(![votes writeToFile:votesFile atomically:YES]) { 
    NSLog(@"An error occurred"); 
} 

如果您收到了錯誤,所以你與你的NSDictionary的問題。

相關問題