2014-05-28 3 views
6

Я хочу использовать NSOutputStream для накопления данных, а затем, когда закончите, создайте объект NSData с содержимым. Я могу это сделать, когда выходной поток на основе файла выглядит следующим образом:Получить NSData из NSOutputStream в памяти?

NSString *tmpDirectory = NSTemporaryDirectory(); 
NSString *filePath = [tmpDirectory stringByAppendingPathComponent:@"tempfile"]; 
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; 
NSOutputStream *outputStream = [[NSOutputStream alloc] initToFileAtPath:filePath append:NO];  [outputStream open]; 

// fill the output stream here 

NSData *contents = [NSData dataWithContentsOfFile:filePath]; 
[outputStream close]; 

Я хочу переменную «» содержимое заполненного без временный файл создается. Могу ли я сделать все это в памяти? Я не вижу API для этого в NSOutputStream documentation.

ответ

14

В соответствии трудно найти в документации, первый инициализации выходной поток с памятью, а затем вызвать методpropertyForKey с ключом NSStreamDataWrittenToMemoryStreamKey.

Для примера:

NSOutputStream *outputStream = [[NSOutputStream alloc] initToMemory]; 
[outputStream open]; 

// fill the output stream somehow 

NSData *contents = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; 
[outputStream close]; 
Смежные вопросы