2013-09-21 3 views
2

Я сохраняю видеофайл размером более 1 ГБ и сохраняю его в homeDirectory. Я пытаюсь преобразовать в объект NSData следующим образом:Преобразование больших данных в NSData

NSData * videoData = [[NSData alloc] initWithContentsOfFile: filePath];

но здесь я получаю данные видео как ноль. Когда я пробовал для видео 500 МБ, он работает нормально.

Есть ли какие-либо ограничения по размеру при конвертации в NSData?

ответ

8

Попробуйте использовать это (требуется IOS 5.0 или более поздней версии):

NSError *error = nil; 
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath 
               options:NSDataReadingMappedIfSafe 
               error:&error]; 

Перед прошивкой 5.0 вы можете использовать:

NSData *data = [[NSData alloc] initWithContentsOfMappedFile:filePath]; 

Это будет отображать файл в виртуальную память, если это безопасно, что значительно сократит объем используемой памяти.

+0

Большое спасибо. Теперь он работает нормально. :) – Sujit

+0

@dreamlax вы можете воспроизвести это с помощью Swift? – user2363025

Смежные вопросы