Ios 将变量保存到光盘中还需要什么?

Ios 将变量保存到光盘中还需要什么?,ios,objective-c,Ios,Objective C,我正在尝试将一个变量保存到硬盘中,以便在应用程序启动时加载它。我做了以下工作: paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [paths objectAtIndex:0]; votesFile = [documentsDirectory stringByAppendingPathComponent:@"votes.dat"

我正在尝试将一个变量保存到硬盘中,以便在应用程序启动时加载它。我做了以下工作:

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];
它对我没有任何作用,票数==零


这里缺少什么?

如果您使用的是NSDictionary,其中NSString作为键,NSNumber作为值,那么这些类与归档和非归档模式兼容,因此您可以使用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 *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是一个字典,其行为如下

希望有帮助,
祝您愉快。

使用writeToFile:atomically时可能会出现各种错误,这就是它返回BOOL的原因。您应该有如下内容:

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

如果出现错误,则说明您的NSDictionary有问题。

它是NSMutableDictionary,是否只包含有效的属性列表对象作为?这些对象是什么?字典键是NSString,值是NSNumber。也许核心数据更适合您?如果没有,问题可能是
writeToFile:
在调用
initWithContentsOfFile:
之前,或者在您的应用程序终止之前没有完成。在这种情况下,您可能需要使用不同的方法…
writeToFile:atomically:
返回一个
BOOL
。您是否检查了什么
[投票写入文件:votesFile原子化:是]返回?