Я пытаюсь использовать ASIHTTPRequest/ASIFormDataRequest
в качестве ключа в NSDictionary следующим образом:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:GPUserData.userlogin forKey:@"username"];
[request setPostValue:GPUserData.password forKey:@"password"];
[request setDelegate:self];
[_delegates setObject:delegate forKey:request];
[_selectors setObject:[NSValue valueWithPointer:selector] forKey:request];
[request startAsynchronous];
Но он не возвращает правильные данные (nil
s или случайные), когда я пытаюсь получить доступ к [_delegate objectForKey:request]
из -requestFinished:
, поэтому я использую в качестве временного решения:
[_delegates setObject:delegate forKey:[request url]];
[_selectors setObject:[NSValue valueWithPointer:selector] forKey:[request url]];
Но [request URL]
не уникален для каждого отдельного запроса. Я знаю, что для того, чтобы что-то было жизнеспособным ключом, нужно, чтобы -hash
и -isEqual:
возвращали один и тот же результат a>, т.е. если объекты возвращают YES
в -isEqual:
, то они оба должны возвращать одно и то же из -hash
.
Из ASIFormDataRequest : ASIHTTPRequest : NSOperation : NSObject
я не вижу метода, который переопределяет -isEqual:
или -hash
из NSObject
, а ASIHTTPRequest
реализует протокол (NSCopying)
.
Так что дает? Почему я не могу использовать запрос в качестве ключа? Есть ли другой уникальный идентификатор для запроса, который я могу использовать?
Любая помощь приветствуется. Для полной справки: я пытаюсь реализовать двухуровневый обратный вызов, в котором класс WebServices
анализирует данные о -requestFinished
(и обрабатывает сетевые ошибки и повторные входы в систему), а затем выполняет еще один обратный вызов, поэтому только данные JSON отправляются как NSDictionary
.
selector
? - person jscs   schedule 24.06.2011@selector(methodOnDelegate:)
. Он отлично отображается и работает, когда я использую[request url]
- person Stephen Furlani   schedule 24.06.2011