我试图在 NSUserDefaults 中保存一些日期(每天用户输入日期,例如重量并保存它)。我不知道该怎么做。很长一段时间以来,我一直在寻找解决方案。我应该尝试 plists 吗?谢谢
问问题
1117 次
2 回答
1
我不知道该怎么做。
这意味着你没有读过这篇文章,这是一种罪过。
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"CurrentDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-10-26T17:48:51.997 回答
0
如果您将拥有大量数据,最好使用 nsuserdefaults 以外的其他内容。在这种情况下,文件可能没问题,例如 plist。如果您确实想使用 nsuserdefaults,这里是一个简单的示例。
- (void) viewDidAppear:(BOOL)animated {
//check if nsuserdefaults has the member value set and if not show them the "login" screen
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *member = [defaults stringForKey:@"member"];
if (![member isEqualToString:@"ValidMember"]) {
...do some stuff
}
写入 nsuserdefaults 使用这个
if ([trimMemberLastName caseInsensitiveCompare:[_memberList objectForKey:memberNumber]] == NSOrderedSame){
//set a value in nsuserdefaults so we never have to check this
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"ValidMember" forKey:@"member"];
[defaults synchronize];
return YES;
}
这里也是 plist 文件的示例:
- (NSString *) getFilePath {
//get filepath
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"saved.plist"];
}
- (void) saveData { //保存数据 NSArray *value = [[NSArray alloc] initWithObjects:[myTextField text],[myDatePicker date], nil]; if ([value writeToFile:[self getFilePath] atomically:YES]) { NSLog(@"它写了文件"); } NSLog(@"value = %@", value.description);
}
- (void) loadData { //加载数据 NSString *myPath = [self getFilePath]; NSLog(@"myPath = %@", myPath.description); BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath]; if (fileExists) { NSArray *values = [[NSArray alloc] initWithContentsOfFile:myPath]; myTextField.text = [值 objectAtIndex:0]; NSLog(@"myTextField = %@", [values objectAtIndex:0]); myDatePicker.date = [值 objectAtIndex:1]; NSLog(@"myDatePkcer = %@", [values objectAtIndex:1]); } }
于 2012-10-26T18:07:46.503 回答