【发布时间】:2011-07-16 08:49:55
【问题描述】:
我必须制作一个 iPhone 应用程序。 我有一个按钮,如果我点击按钮,按钮名称是在 xib 中注册,然后注册表将打开
注册表格在网络服务器中创建 如果用户填写注册表 假设他在注册时填写了用户名和密码,它将保存在服务器中,并且相同的用户名和密码也应该保存在或本地数据库中。
【问题讨论】:
标签: ios objective-c sqlite core-data settings
我必须制作一个 iPhone 应用程序。 我有一个按钮,如果我点击按钮,按钮名称是在 xib 中注册,然后注册表将打开
注册表格在网络服务器中创建 如果用户填写注册表 假设他在注册时填写了用户名和密码,它将保存在服务器中,并且相同的用户名和密码也应该保存在或本地数据库中。
【问题讨论】:
标签: ios objective-c sqlite core-data settings
您有 3 个主要选项来持久化登录数据;设置、核心数据和 SqlLite。只需要一个用户名和密码,您只需要使用设置,因为其他两个选项的开销会很大,而且它们更常用于关系数据。
要使用设置,您需要在应用程序控制器通过调用初始化时加载它们;
+ (void) loadDefaultSettings {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *pListPath = [path stringByAppendingPathComponent:@"Settings.bundle/Root.plist"];
NSDictionary *pList = [NSDictionary dictionaryWithContentsOfFile:pListPath];
NSMutableArray *prefsArray = [pList objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *regDictionary = [NSMutableDictionary dictionary];
for (NSDictionary *dict in prefsArray) {
NSString *key = [dict objectForKey:@"Key"];
if (key) {
id value = [dict objectForKey:@"DefaultValue"];
[regDictionary setObject:value forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:regDictionary];
}
然后,您可以通过对此的方法调用来存储您的用户名和密码;
+ (void) storePersistedLogin:(NSString *)uid withPassword:(NSString *)pswd {
[[NSUserDefaults standardUserDefaults] setObject:uid forKey:@"UID"];
[[NSUserDefaults standardUserDefaults] setObject:pswd forKey:@"PSWD"];
}
您可以使用以下方法填充 UITextField 输入;
+ (void) populatePersistedLogin:(UITextField **)uid andPassword:(UITextField **)pswd {
[*uid setText:(NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"UID"]];
[*pswd setText:(NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"PSWD"]];
}
我在单独的 SettingsUtils 类中有这些公共方法,因此我可以确保我的密钥是相同的。您也可以将键声明为 NSString 对象,以减少输入错误的机会。
【讨论】: