У меня возникает ситуация, когда я получаю байтовые данные через запрос веб-служб и хочу записать их в файл на моем устройстве iOS.Раньше я добавлял все данные (до конца данных) в переменную памяти и в конце записывал данные, используя NSStream
, в файл на моем устройстве iOS, используя метод:
stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
Это прекрасно работает длянебольшой размер данных, но проблема в том, что если я получаю данные через веб-сервисы, это может быть большой кусок (пара МБ), и я не хочу собирать все данные в памяти, чтобы записать их в файл, чтобы сделать их эффективными.Я думаю, мне нужно переключиться на NSFileHandle
, чтобы записать данные небольшого размера в один и тот же файл несколько раз.Теперь мой вопрос: каков наилучший подход для этого?Я имею в виду, как я могу сделать запись в файл в фоновом режиме, используя NSFileHandle
?Я использую код, подобный следующему:
- (void) setUpAsynchronousContentSave:(NSData *) data {
NSString *newFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/MyFile.xml"];
if(![[NSFileManager defaultManager] fileExistsAtPath:newFilePath ]) {
[[NSFileManager defaultManager] createFileAtPath:newFilePath contents:nil attributes:nil];
}
if(!fileHandle_writer) {
fileHandle_writer = [NSFileHandle fileHandleForWritingAtPath:newFilePath];
}
[fileHandle_writer seekToEndOfFile];
[fileHandle_writer writeData:data];
}
, но с передачей данных размером 1-2 Мб к указанному выше методу, мне нужно, чтобы он работал в фоновом режиме?К вашему сведению, я пишу в главной теме.