我是 iOS 开发的新手。
在身份验证时如何以及在何处存储我们从服务器中提取的值?我正在开发这个使用登录屏幕的应用程序。一旦您尝试登录,它会向 API 发送 JSON 帖子,然后服务器会做出响应。我们得到一个唯一的用户 ID。我应该如何以及在哪里存储该唯一用户 ID,以便我可以使用它跨不同视图提取数据?那是在登录后,它转到另一个视图控制器。有没有可以在任何视图控制器中访问的全局变量或存储?
谢谢。
您可以将数据存储在字典中,然后您可以使用用户默认值来传递这样的值
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSArray *dataArr=[data JSONValue];
for (int i=0; i<[dataArr count]; i++) {
NSDictionary *dict=[dataArr objectAtIndex:i];
NSString *codeV=[dict valueForKey:@"userid"];
[NSUserDefault StandasdUserDefault]setObject: dict forKey :@"logindata"];
NSLog();
}
NSLog(@"%@", json_string);
另一种观点
-(void) ViewDidLoad{
NSDictionary *dict = [NSUserDefault StandardUserDefault]objectForKey:@"logindata"]
NsLog(@"dict is %@",dict);
}
你可以用NSUserDefaults
这个。为每个用户自动创建一个默认数据库。我们可以保存浮点数、双精度数、整数、布尔值、UrLs 等。我们可以使用以下方法来设置和检索:
设置 :
- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName
要检索:
- (NSInteger)integerForKey:(NSString *)defaultName
完整的描述在NSUserDefaults
这里:http:
//developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html
您可以使用人们提供的 NSUserDefaults、Keychain 或 Singleton。但这取决于您的应用程序。
你想一直保留数据吗?甚至应用程序都被杀死了?然后 NSUserDefaults 和 Keychain (更安全)就可以了。当应用程序被杀死时,单例将丢失数据。
但我更感兴趣的是你的应用程序本身。对于您的网络服务,它是否只需要用户 ID?没有会议?或其他可以阻止人们在知道地址和 ID 并且不知道登录 ID 和密码的情况下调用您的 Web 服务的事情?
有2个场景
这意味着一旦你得到了 userId,你需要保存它,这样下次用户运行应用程序时,就不需要登录了。
不要在这个场景中使用 NSUserDefault
保存值。如果您的用户 ID(或用户名或密码)是敏感信息,并且 NSUserDefault 以纯文本形式存储数据。任何人都可以轻松地从应用程序包中检索信息。
在这种情况下,总是使用KeyChain来保存数据。您还可以阅读为什么首选钥匙串而不是 NSUserDefault
.
在这种情况下,忘记NSUserDefault
,忘记 KeyChains,只需在应用程序委托文件中创建一个属性,可以从应用程序内部的任何位置访问它。
简而言之,永远不要使用 NSUserDefault 来存储敏感信息(如密码、卡号等)。辉煌在这里解释。