我有NSUserDefaults存储一些字符串变量,比如姓名,出生日期,地址等。我想知道的是如何编写一个代码,为每个新用户创建一个新对象。例如,我有一个旋转轮,在用户第一次运行应用程序后立即显示。我想要的是,那个轮子有一个选项 - “新用户”。一旦新用户填写了我正在使用NSUserDefaults保存的一堆文本字段,我希望该用户保存在该旋转轮上,以便下次他们打开应用程序时,他们可以选择返回所有他们之前放入的变量,或创建新用户,以便他们可以输入所有新变量。
除了编写代码以自动创建新用户外,我知道如何做所有事情。潜在地,程序应该允许无限数量的这些用户对象,然后只使用像他们的姓氏一样的任意东西输入到旋转轮中。我假设代码需要放在以下用于保存NSUserDefaults的代码中的某处:
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
[userData setObject:txtName.text forKey:@"name"];
---编辑澄清---- 我可以通过简单地添加更多行(如上面的第2行)将多个字符串放入此'userData'对象中。我想知道的是如何添加'user2Data','user3Data','user4Data','usernData'..........以创建可能无限量的用户对象来存储这些变量?
答案 0 :(得分:0)
您可以修改以下内容以满足您的需求,并将其添加到您的应用代理中:
+ (void) initialize
{
if ([self class] == [MyAppDelegate class]) {
// initialize user defaults dictionary
BOOL isFirstTimeRun = YES;
...
NSMutableDictionary *resourceDict = [NSMutableDictionary dictionary];
[resourceDict setObject:[NSNumber numberWithBool:isFirstTimeRun] forKey:kIsFirstTimeRunKey];
...
[[NSUserDefaults standardUserDefaults] registerDefaults:resourceDict];
}
}
...
- (void) applicationDidFinishLaunching:(UIApplication *)application
{
if ([[[NSUserDefaults standardUserDefaults] objectForKey:kIsFirstTimeRunKey] boolValue]) {
// you could do first-time-run stuff here, such as initializing
// other data model elements...
}
...
}
...
- (void) applicationWillTerminate:(UIApplication *)application
{
// if we're quitting the app, it must have been run at least once
if ([[[NSUserDefaults standardUserDefaults] objectForKey:kIsFirstTimeRunKey] boolValue])
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:NO] forKey:kIsFirstTimeRunKey];
...
}
答案 1 :(得分:0)
您可以将NSArray
个对象添加到NSUserDefaults
。
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
NSMutableArray *users = [NSMutableArray mutableArrayWithArray:[userData objectForKey:@"users"];
[users addObject:txtName.text];
[userData setObject:[NSArray arrayWithArray:users] forKey:@"name"];
[userData setObject:txtName.text forKey:@"name"];
如果您需要多个用户数据字符串,则可以查看使用NSDictionary
对象。
所有这一切,如果您要存储 lot 数据,您应该查看可能在您的应用程序库目录中保存.plist文件。
答案 2 :(得分:0)
您可能想要为每个用户创建一个property list,并在NSUserDefaults中保存用户列表。选择用户后,您可以加载该特定用户的属性列表的内容,并加载/存储该特定属性列表中的所有数据。这种方法的基础是使用NSDictionary *,无论何时需要读取和写入属性列表,都可以使用NSDictionary *和NSMutableDictionary *。首次构造属性列表时,只需实例化NSMutableDictionary即可。如果要保存或加载它,可以使用NSPropertyListSerialization类从属性列表中保存或加载字典。