Потоковое с MKNetworkKit на iOS

Я пытаюсь выяснить, как заставить MKNetworkKit работать с данными из потока. Я вижу, что некоторые данные загружаются (индикатор в строке состояния), но я понятия не имею, что происходит с этими данными после их фактической загрузки. Я помещаю заявление NSLog в тело connection: didReceiveData: но он не вызывается во время потоковой передачи. Любые указатели, как решить эту проблему?

редактировать

Извините, мой вопрос был неточным. Я знаю, как транслировать в файл, но мне нужно транслировать в память (желательно, экземпляр NSData). Хорошо, это снова кажется простым из-за метода NSOutputStream initWithBytes:capacity:, И моя проблема здесь в том, что мой поток имеет неопределенную длину, поэтому это будет иметь огромное влияние на память. Я не знаю что делать. Мое идеальное решение работает так. Небольшие порции данных из потока обрабатываются после загрузки, а затем отбрасываются.

2 ответа

Решение

Вы могли бы использовать outputStreamToBuffer:capacity: метод для создания потока.

Что касается буфера, вы можете использовать кольцевой буфер, чтобы вы могли читать из него, когда поток записывает в него. Отличная реализация (и объяснение) здесь.

Потоковая загрузка файлов - это волшебство из трех строк с MKNetworkKit.

//Create a MKNetworkOperation for the remote URL.

MKNetworkOperation *op = [self operationWithURLString:remoteURL 
                                                    params:nil
                                              httpMethod:@"GET"];

// add your output stream, in this case a file
[op addDownloadStream:[NSOutputStream outputStreamToFileAtPath:filePath
                                                             append:YES]];
// enqueue the operation to a MKNetworkEngine.
[self enqueueOperation:op];

Вот и все.

Другие вопросы по тегам