2013-08-20 2 views
-1

Я хочу, чтобы иметь возможность, скажем, запустить NSURLConnection пост и скачать как этот класс:NSURLConnection в одиночку

NSString *data = [Server post:para1, para2, para3]; 

Я уверен, что я должен написать класс, содержащий делегатов NSURLConnection и, конечно же, функцию, называемую post, инициирующей NSURLConnection и возвращающую загруженную строку.

Вся проблема в том, что я не знаю, как это сделать правильно. Я попытался добавить класс под названием «Сервер» с делегатами и т. Д., А затем сделать публикацию функции общедоступной. Впоследствии функция post не имела доступа к делегатам и переменным в классе. Кроме того, функция post не имела возможности вернуть строку, поскольку она была впервые известна в - (void)connectionDidFinishLoading:(NSURLConnection *)connection.

Не могли бы вы дать мне подсказку, как сделать класс, который может HTTP POST для URL-адреса и вернуть строку и запустить только одну или несколько строк?

+0

Вы уверены, что это то, что вы хотите? Это должен быть блокирующий вызов, поскольку соединение может быть очень медленным. Кроме того, он может выйти из строя. –

+0

Я думаю, что это будет самый легкий, да. Я запустил его в другом потоке, чтобы предотвратить зависание приложения. Причина, по которой я хочу это, заключается в том, что NSURLConnection будет запускать много раз, возвращая разные значения, и с ними нужно обращаться по-разному. Кажется очень трудно «догадаться», какая строка возвращается в - (void) connectionDidFinishLoading: (NSURLConnection *). – Hedam

ответ

1

Для синхронного запроса URL (предпочтительно в неосновном потоке) вы можете использовать метод

sendSynchronousRequest:returningResponse:error: 

классовой NSURLConnection.

0

Вы можете достичь этого двумя способами: у вас должен быть пользовательский делегат, который вызывается, когда завершается connectionDidFinishLoading, или вы можете предоставить вашему серверному методу обратный вызов блока, который вызывается, когда он будет завершен. Блоки немного запутываются, но они очень полезны, чтобы знать, как их использовать.

Посмотрите Blocks (Apple Doc)

Bock Tutorial

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