ユーザーがログインしASIHTTPRequest
ているかどうかを確認し、ログインが成功したときにブール値を返そうとしています
問題:ブール値を要求すると、常に 0 が返され、数秒後 ASIHTTPRequest
に要求が終了し、ブール値が更新されます。
私が欲しいのは、すべてのリクエストが終了した後にブール値を取得することです。適切な方法は、ブール関数を記述して、asihhtp リクエストの結果を取得することだと思いますか?
シングルトンで:
@interface CloudConnection : NSObject
{
BOOL isUserLoggedIN;
}
@property BOOL isUserLoggedIN;
+ (CloudConnection *)sharedInstance;
@end
+ (CloudConnection *)sharedInstance
{
static CloudConnection *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[CloudConnection alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
- (id)init {
if (self = [super init]) {
//send login request
[self sendLoginRequest];
}
return self;
}
-(void) sendLoginRequest{ .....}
- (void)requestFinished:(ASIHTTPRequest *)request
{ else if (request.responseStatusCode == 202) {
//parse json data
NSLog(@"Login Succesfull");
_isUserLoggedIN=YES;
}
}
- (void)requestFailed:(ASIHTTPRequest *)request{}
VC で:
CloudConnection *sharedInstance=[CloudConnection sharedInstance];
NSLog(@"is logged in init %hhd",sharedInstance.isUserLoggedIN);
[self performSelector:@selector( checkLoginAfterFiveSeconds) withObject:nil afterDelay:5.0];
-(void) checkLoginAfterFiveSeconds
{
CloudConnection *sharedInstance=[CloudConnection sharedInstance];
NSLog(@"is logged in init %hhd",sharedInstance.isUserLoggedIN);
}
NSLOG:
is logged in init 0
Login Succesfull`
is logged in init 1 //after 5 secs