我是.Net开发人员,也是Xcode的新手。我正在使用WCF进行服务器端进程,并在iphone app和WCF之间发送/接收JSON数据。我想在下面执行本机iPhone应用程序:
我不确定这是否是iphone app登录过程的正确方法?
我已经完成了WCF身份验证并发送回JSON,但现在我需要存储成员GUID,有人可以指出我正确的方向吗?我应该使用什么来存储以后可以使用的信息?一个例子就是很棒!
答案 0 :(得分:5)
对于NSUserDefaults来说,这听起来很完美。像这样使用它们:
NSUserDefaults *myUserDefaults = [NSUserDefaults standardUserDefaults];
[myUserDefaults setObject: @"the key" forKey: @"key"];
您还可以使用其他功能设置不同类型的数据,例如setInteger:forKey:
或setValue:forKey:
。要调用您的数据,请使用此功能:
NSString *theKey = [myUserDefaults objectForKey:@"key"];
,返回值将是您存储在其中的对象。其他数据类型与integerForKey:
和valueForKey:
等函数的工作方式类似。
答案 1 :(得分:4)
您应该知道必须尊重应用程序的沙箱,这意味着您无法在设备上“永久”存储某些内容。
通常这种逻辑(保存令牌等)是通过将数据保存到NSUserDefaults
来完成的。
NSUserDefaults
是应用程序的属性列表,您可以将数据存储为键值对。
您可以通过执行以下操作来保存某些内容:
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:@"mylongtoken" forKey:@"com.myapp.apitoken"];
[ud synchronize];
如果删除该应用,此数据也会消失。当应用程序通过App Store更新时,此数据会保留,并且它将作为设备备份的一部分备份到iTunes / iCloud。
您还可以将此属性列表与iCloud同步,但是请查看此帖子:Can I use iCloud to sync the NSUserDefaults plist file
答案 2 :(得分:1)
实际上,如果您要存储凭据,则应该将其放入钥匙串中。 NSUserDefaults可以很容易地从设备上加载,并以明文形式保存。
这是一个很好的钥匙串实用程序库,应该会有所帮助: https://github.com/ldandersen/STUtils/tree/master/Security
您可以像这样保存凭据:
[STKeychain storeUsername:@"username" andPassword:@"password" forServiceName:@"namespace" updateExisting:YES error:&error];
然后像这样检索它们:
NSString *password = [STKeychain getPasswordForUsername:@"username" andServiceName:@"namespace" error:&error];