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原子化:是]代码>返回?