2015-04-07 2 views
-1

Я сохраняю текстовый файл, используя метод writeToUrl в классе nsstring. Данные сохраняются. Я подтвердил это, открыв файл, однако, когда я звонюnill return from dataWithContentsOfFile absoluteString

NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL absoluteString]]; 

Я получаю значение nill для tempData. И, кстати, ребята, это обязательное для меня использование [tempFileURL absoluteString] при извлечении данных.

NSString *testString = @"Hello World"; 
NSString *fileName = @"TestFile.txt"; 
NSString *folderName = @"FolderName"; 

NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
NSURL *localFolder = [documentsURL URLByAppendingPathComponent:folderName isDirectory:YES]; 
[[NSFileManager defaultManager] createDirectoryAtURL:localFolder withIntermediateDirectories:YES attributes:nil error:NULL]; 
NSURL *tempFileURL = [localFolder URLByAppendingPathComponent:fileName]; 

NSError *error = nil; 

[testString writeToURL:tempFileURL 
       atomically:YES 
        encoding:NSUTF8StringEncoding 
        error:&error]; 
NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL absoluteString]]; 
+3

Что журналы tempFileURL и [tempFileURL absoluteString] показывают? – rdelmar

+2

-3 для передачи «nil» для параметра ошибки и не проверять статус возврата дважды. – zaph

ответ

1

Вы должны использовать метод path, когда у вас есть файл URL в локальной файловой системе, и вы хотите, чтобы получить путь к этому файлу. Не используйте absoluteString. absoluteString будет включать в себя схему file:// в начале, что недействительно в пути.

0

Ошибка читает файл и путь. Существует несоответствие между URL-адресом и путем.

Используйте либо:

NSData *tempData = [NSData dataWithContentsOfFile:[tempFileURL path] options:0 error:&error]; 

или

NSData *tempData = [NSData dataWithContentsOfURL:tempFileURL options:0 error:&error]; 

dataWithContentsOfURL