2013-11-01 2 views
1

Так что я работаю с AFNetworking 2.0 в течение последних нескольких дней, и все идет хорошо - начиная понимать библиотеку, чем я ее использую.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

проблемы, с которыми я столкнулся:

  1. 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 запрос Первоначальный запрос. Параметры @param Параметры, подлежащие кодированию . Ошибка @param Ошибка, произошедшая в то время как пытается кодировать параметры запроса.

@return Сериализованный запрос.

Теперь я должен сделать BBWebService соответствовать этому протоколу, а затем в RCBaseData магазине есть способ делать запрос, сделать по-другому - для GET/POST?

Первый аргумент - это то, о чем я не уверен - как создать объект NSURLRequest для GET /POST request?

Как только я сделаю запрос - как мне получить BBWebService в Захват ответ?

Как я набираю это, я думаю ... сделайте два класса, один ответ и один запрос? Я думаю, что я почти нахожусь в решении, в котором я должен быть, - просто нужно очистить путь.

ответ

2

Не делать этого больше.

Нет Подкласс больше

Вы должны создать «собственный класс» и использовать AFHTTPOperationManager

Это довольно много его.

+0

Я бы хотел использовать AFHTTPSessionManager для всех сетевых приложений, так как приложение будет только iOS7. (Может использоваться NSURLSession). Проблема, если в другом классе - как я могу обнаружить запросы POST/GET, не записывая массивный оператор IF в методе «Свой класс»? - Будет ли вместо этого использоваться протоколы AFNetworking? Здесь http://cocoadocs.org/docsets/AFNetworking/2.0.0/Protocols/AFURLResponseSerialization.html и этот: http://cocoadocs.org/docsets/AFNetworking/2.0.0/Protocols/AFURLRequestSerialization.html Спасибо за Помогите! – Tander

Смежные вопросы