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

它对我没有任何作用,投票 == nil

我在这里想念什么?

4

2 回答 2

1

如果您使用 NSDictionary,其中 NSStrings 作为键,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 是一个字典,它的行为就是这样。

希望对您有所帮助,祝您有美好的一天。

于 2013-07-02T23:46:05.377 回答
1

使用 writeToFile:atomically: 可能会出现各种错误:这就是它返回 BOOL 的原因。你应该有类似的东西:

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

如果您收到错误,则说明您的 NSDictionary 存在问题。

于 2013-07-02T23:48:12.613 回答