我使用登录功能制作了IOS应用程序。我使用ASIHTTPRequest来检查用户是否存在于MySQL数据库中。一切正常,但我想通过其他viewcontrollers传递userid或在应用程序的其他部分检索它。
有人能以正确的方向推动我如何以最好和最安全的方式做到这一点吗?
这是我对PHP脚本执行POST HTTP请求的方式:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"*SOME_URL*"]];
在回调中,我可以检索用户ID,但我想将此ID存储在应用程序的内存中以供进一步使用。
感谢。
答案 0 :(得分:6)
您可以将userId
存储在AppDelegate
。
使用以下代码在userId
中声明AppDelegate.h
属性:
@property (nonatomic, strong) NSString *userId
然后使用以下代码在AppDelegate.m
中合成它:
@synthesize userId;
然后,您可以在应用中的任何位置使用userId
。在要使用的类AppDelegate
中为userId
添加导入,如下所示:
#import "AppDelegate.h"
要检索userId
,请使用以下代码:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *userId = [appDelegate userId];
要设置userId
,请使用以下代码:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate setUserId:YouValueRetrievedByInternetOrWhateverYouWant];
答案 1 :(得分:-1)
有一个作为单例的会话类,可以使用静态方法访问。
为此,您可以添加静态方法
+ (Session *)sharedInstace {
static Session *session;
if (!session)
session = [Session new]; // there are more proper ways to instantiate a singleton class, not gonna get into it now
return session.
}
在该类.h上你应该添加一个NSString(或你选择的类或任何你想要的类),你可以从[Session sharedInstance].userID