存储从iOS开发中的服务器中提取的值

时间:2013-07-01 11:05:30

标签: ios json

我是iOS开发的新手。

如何以及在何处存储我们在身份验证时从服务器提取的值?我正在开发这个使用登录屏幕的应用程序。尝试登录后,它会向API发送一个JSON帖子,服务器会响应。我们找回了一个独特的用户ID。我应该如何以及在何处存储该唯一用户ID,以便我可以使用它来跨不同视图提取数据?那是在登录之后,它会转到另一个视图控制器。我可以在任何视图控制器中访问全局变量或存储吗?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以将数据存储在字典中,然后您可以使用“用户默认值”传递这样的值

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);
}

答案 1 :(得分:0)

您可以使用NSUserDefaults。 为每个用户自动创建默认数据库。 我们可以保存花车,双打,整数,布尔,UrL等。 我们可以使用以下方法来设置和检索:

设置:

- (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

答案 2 :(得分:0)

您可以使用人们提供的NSUserDefaults,Keychain或Singleton。但这取决于你的应用程序。

您是否希望始终保留数据?即使应用程序被杀?那么NSUserDefaults和Keychain(更安全)就可以了。当应用程序被杀时,Singleton将丢失数据。

但我更感兴趣的是你的应用本身。对于您的Web服务,它只需要用户ID吗?没有会话?或者其他可以防止人们在知道地址和身份证件而又不知道登录ID和密码的情况下调用您的网络服务的事情?

答案 3 :(得分:0)

有两种情况

1。您希望在应用程序的多次运行中保存值

这意味着一旦你获得userId,你需要保存它,以便下次用户运行应用程序时,无需登录。

请勿在此场景中使用NSUserDefault

保存值。如果您的用户ID(或用户名或密码)是敏感信息,NSUserDefault以纯文本格式存储数据。任何人都可以轻松地从应用程序包中检索信息。

在此方案中,始终使用KeyChain来保存数据。 You can also read why keychain is preferred over NSUserDefault

2.您只需在应用程序当前运行期间保存该值。

在这种情况下,忘记NSUserDefault,忘记KeyChains,只需在应用程序委托文件中创建一个属性,该属性可以从应用程序内的任何位置访问。

简而言之,绝不使用NSUserDefault存储敏感信息(如密码,卡号等)。 Brilliant解释here