Так что я работал с AFNetworking 2.0
последние несколько дней, и дела шли хорошо — я начал понимать библиотеку по мере того, как больше ей пользовался.
Вчера я понял, что создаю класс для обработки веб-служб моего приложения — GET / POST /DELETE
и т. д.
Теперь AFNetworking уже справляется с этими вещами, и нет причин создавать собственный метод. Однако это та часть, на которой я застрял.
Вот краткий пример того, что я хочу сделать:
В классе типа DataStore
я хотел бы сделать что-то вроде этого:
RCBaseDataStore.h
-(void)handelWebService: (int) webServiceID
{
Switch (webServiceID)
case: GET_STORE_ITEMS_WSID
{
BBWebService *newService = [[BBWebService alloc]initWithURL:URL
RequestType:@"GET"
PostDataValuesAndKeys:nil
RequestProperties:nil
UrlParameters:urlParams];
}
}
В приведенном выше примере я использовал индекс идентификаторов веб-сервисов — это позволяет использовать оператор switch — но существует 30 или 40 веб-сервисов — так что этот метод будет расти… намного.
Теперь мне нужно заставить BBWebService
воздействовать на этот URL-адрес, который затем создает URL-адрес и объединяет параметры. Затем я передаю это другому методу внутри BBWebService
, который запускает GET / POST requests
Проблемы, с которыми я сталкиваюсь:
- AFNetworking делает все это (построение URL-адреса и выполнение запроса) - Как мне использовать используемые им методы - не переопределяя их, а просто добавляя к ним?
Например, GET / POST requests
— мне нужно сохранить responseObject
в NSData object
, что я могу сделать. Но мне не нужна эта логика в RCBaseDataStore
— я хочу ее в BBWebService
— но без переопределения методов в суперклассе AfNetworking
, в котором я нашел бы исходные методы.
Я просмотрел файл AFRequestSteralization.h
в библиотеке AFNetworking, и у него есть такой протокол:
(NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
withParameters:(NSDictionary *)parameters
error:(NSError *__autoreleasing *)error;
В примечаниях сказано следующее:
Возвращает запрос с указанными параметрами, закодированными в копию исходного запроса.
@param request Исходный запрос. @param параметры Параметры, которые необходимо закодировать. @param error Ошибка, возникшая при попытке закодировать параметры запроса.
@return сериализованный запрос.
Теперь я должен заставить BBWebService соответствовать этому протоколу, а затем в RCBaseData Store иметь метод для выполнения запроса, сделанный по-другому - для GET / POST
?
Первый аргумент - это то, в чем я не уверен - как мне создать объект NSURLRequest
для GET /POST request
?
Как только я отправлю запрос, как мне заставить BBWebService
захватить ответ?
Когда я печатаю это, я думаю... сделать два класса, один ответ и один запрос? Я думаю, что я почти нашел решение, которое мне нужно, - просто нужно расчистить путь.