Потоковое с 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];
Вот и все.