从内存中的NSOutputStream获取NSData?

jos*_*ine 7 file-io nsdata nsoutputstream ios

我想使用NSOutputStream来累积数据,然后在完成后,使用内容创建一个NSData对象.我可以在输出流基于文件时执行此操作,如下所示:

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];
Run Code Online (Sandbox Code Playgroud)

我希望填充'contents'变量而不创建临时文件.我可以在记忆中做到这一点吗?我没有在NSOutputStream文档中看到API .

jos*_*ine 15

根据难以找到的文档,首先使用内存初始化输出流,然后使用密钥NSStreamDataWrittenToMemoryStreamKey调用propertyForKey方法.

对于你的例子:

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

// fill the output stream somehow

NSData *contents = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
[outputStream close];
Run Code Online (Sandbox Code Playgroud)