当我用表格中的titlestring替换@"hello"
时,单元格显示空白,如果我离开你好,一切正常,包括“detailsstring”。我不知道为什么它这样做,因为detailsstring设置与titlestring完全相同。
这是代码:
在.m文件中我有
@synthesize detailsstring;
@synthesize titlestring;
并且它在.m中的所有定义都相同。我也有这个:
- (void)viewDidLoad{
titlestring =[[NSUserDefaults standardUserDefaults] objectForKey:@"titletext"];
detailsstring = [[NSUserDefaults standardUserDefaults] objectForKey:@"details"];
tabledata = [[NSArray alloc] initWithObjects:@"hello", nil];
tablesubtitles = [[NSArray alloc] initWithObjects:detailsstring, nil];
[super viewDidLoad];
}
现在,我将这些Userdefaults保存在另一个控制器中。以下是不同视图控制器中的保存按钮操作:
- (IBAction)saveButton:(id)sender {
NSUserDefaults *titletext = [NSUserDefaults standardUserDefaults];
[titletext setObject:titleTextfield.text forKey:@"titletext"];
NSUserDefaults *details = [NSUserDefaults standardUserDefaults];
[details setObject:detailstextfield.text forKey:@"details"];
NSUserDefaults *categoryUser = [NSUserDefaults standardUserDefaults];
[categoryUser setInteger:selectedCategory forKey:@"category"];
}
我做错了什么?
答案 0 :(得分:3)
首先,NSUserDefaults
的一个实例足以进行所有三次修改。要立即将更改“推送”到文件系统,您可以调用[userDefaults synchronize];
。否则,无法保证您的更改会立即保存。如果您不能等待保存更改,Apple建议只调用此方法。
- (IBAction)saveButton:(id)sender {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:titleTextfield.text forKey:@"titletext"];
[userDefaults setObject:detailstextfield.text forKey:@"details"];
[userDefaults setInteger:selectedCategory forKey:@"category"];
[userDefaults synchronize];
}
在viewDidLoad:
方法中,尝试输出保存的值以测试应用程序的完整性:
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"details"]);