iOS - использование нескольких соединений - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть простое представление входа в систему, что, когда вы успешно входите в систему, он идет и получает некоторый JSON с сервера и вставляет его в базу данных. Так что я использую:

// NSURLRequest 

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // appending data
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    // insert into db
}

Я хочу, чтобы второе соединение теперь загружало некоторые документы, как я могу использовать описанные выше методы для передачи ему другого URL-адреса и обработки данных другим способом (не json) для 2-го NSURLRequest в том же виде?

1 Ответ

1 голос
/ 02 декабря 2011

Ну, первое, что вам нужно сделать, это снова установить delegate вашего нового NSURLConnection на этот класс, чтобы вызывать методы (но вы это знали). Если вы делаете это по одному, сохраняйте указатель на активный NSURLRequest, что-то вроде:

@property (nonatomic, assign) NSURLRequest *activeURLRequest;

Затем проверьте URL активного запроса, чтобы различать запросы:

- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *urlPath = [[activeURLRequest URL] path];
    if([urlPath isEqualToString:@"http://my.url.string/1"])
        // insert into DB
    else if([urlPath isEqualToString:@"http://my.url.string/2"])
        // do the other thing
}

Обратите внимание, что вы также можете сравнить объект NSURL напрямую с сохраненной версией его, используя isEqual: (или оператор ==).

Если вы делаете больше, чем по одному, вам нужен другой способ дифференциации. Я рекомендую использовать ASIHTTPRequest или AFNetworking, чтобы сделать это проще, но если вы хотите сделать это с помощью библиотек Apple, вам нужно будет раскрутить несколько потоков, оставьте запись того, какой номер потока обрабатывает какой URL-адрес запроса, и используйте эту информацию в своем методе connectionDidFinishLoading:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...