Я пытаюсь использовать 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
с или случайные), когдаЯ пытаюсь получить доступ к [_delegate objectForKey:request]
из -requestFinished:
, поэтому я использую временное решение:
[_delegates setObject:delegate forKey:[request url]];
[_selectors setObject:[NSValue valueWithPointer:selector] forKey:[request url]];
Но [request URL]
не уникален для каждого отдельного запроса.Я знаю, что для того, чтобы что-то было жизнеспособным ключом, необходимо, чтобы -hash
и -isEqual:
возвращали один и тот же результат , т. Е. Если объекты возвращают YES
в -isEqual:
, то они оба должны возвращатьто же самое с -hash
.
с ASIFormDataRequest : ASIHTTPRequest : NSOperation : NSObject
Я не вижу метода, который переопределяет -isEqual:
или -hash
с NSObject
и ASIHTTPRequest
, реализующий протокол (NSCopying)
.
Так что же дает?Почему я не могу использовать запрос в качестве ключа?Есть ли какой-то другой уникальный идентификатор для запроса, который я могу использовать?
Любая помощь приветствуется.Для полной справки я пытаюсь реализовать двухуровневый обратный вызов, в котором класс WebServices
анализирует данные в -requestFinished
(и обрабатывает сетевые ошибки и повторный вход в систему), а затем выполняет другой обратный вызов, чтобы отправлять только данные JSONкак NSDictionary
.