У меня есть 2 вопроса.
1.) Я создаю класс NSObject
, и у меня есть следующий код в нем.(ASIHTTPRequest
POST
).Имя класса NSObject
называется SendToServer
.Я называю класс следующим образом:
SendToServer *sv = [[SendToServer alloc]];
sv.grabURLInTheBackground ;
NSLog(@"This line is executed ");
Ниже приведен код из класса SendToServer
NSObject
.
- (void)grabURLInTheBackground
{
if (![self queue]) {
[self setQueue:[[[NSOperationQueue alloc] init] autorelease]];
}
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[[self queue] addOperation:request]; //queue is an NSOperationQueue
}
- (void)requestDone:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
}
- (void)requestWentWrong:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
Проблема заключается в том, что код выполняетсястрока sv.grabURLInTheBackground ;
и до того, как она выполнит методы requestDone
или requestWentWrong
, она выполнит NSLog (NSLog(@"This line is executed ");
)
То, что я хочу, чтобы моя программа, - это завершить все операции в SendToServer
NSObject
class и затем Выполните NSLog (В последовательности).
Сначала выполните sv.grabURLInTheBackground ;
, как только все действия в этом методе / классе закончены, затем вернитесь к коду и выполните другую строкучто NSLog(@"This line is executed ");
.
2.) Мне нужно вернуть строку при выполнении метода requestDone
.Как мне изменить код для этого;
- (NSString * )requestDone:(ASIHTTPRequest *)request {
}
, но как мне отредактировать [request setDidFinishSelector:@selector(requestDone:)];
для приведенного выше кода?
------------------------------------------------------------------------------------------------------------------------------------------
РЕДАКТИРОВАТЬ
Я делаю это для входа в систему.После нажатия кнопки я буду вызывать метод grabURLInTheBackground
из класса NSObject
.И viewcontroller должен знать, был ли вход пользователя успешным или неудачным.
SendToServer *sv = [[SendToServer alloc]];
[sv grabURLInTheBackground] ;
NSLog(@"User login SUcess or failed %@", [sv userloginSucessOrFail]);
Например, скажем, [sv userloginSucessOrFail]
возвращает, если вход пользователя был успешным или неудачным.
Что здесь происходит,заключается в том, что после вызова [sv grabURLInTheBackground]
он напрямую отправляется и выполняет строку кода NSLog(@"User login SUcess or failed %@", [sv userloginSucessOrFail]);
.
Я хочу найти способ сообщить моему ViewCOntroller, был ли вход пользователя успешным или неудачным.