我想使用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];

我希望在不创建临时文件的情况下填充“内容”变量。我可以在内存中完成所有这些操作吗?我没有在NSOutputStream documentation中看到用于此的API。

最佳答案

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

例如:

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

// fill the output stream somehow

NSData *contents = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
[outputStream close];

关于ios - 从内存中的NSOutputStream获取NSData?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23922195/

10-10 21:02