2014-12-04 7 views
0

Я пытаюсь написать простую строку в файл, используя следующий код:IOS 8 WriteToFile в симуляторе

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
          documentsDirectory]; 
    NSString *content = @"Test Content"; 
    NSError *error = nil; 
    [content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:&error]; 

    NSLog(@"Error %@ %@", fileName, error); 

Но файл is'nt написано и ошибка равна нулю.

Я запускаю код в iOS Simulator и ожидаю, что файл будет записан в такое место, как:/Пользователи/пользователь/Библиотека/Разработчик/CoreSimulator/Devices/85DDC17D-A771-40D9-99BE-71FF6B60D2DF/data /Containers/Data/Application/BD30A945-25DB-4ECE-B7F7-E9C20C6691C7/Documents/textfile.txt (путь к файловому имени из NSLog).

+1

«writeToFile: atomically: encoding:' »возвращает значение BOOL для указания успеха или неудачи записи. В вашем случае оно возвращает true или false? –

+0

Возвращает true. Но файл не был записан. Я создал сейчас тестовый проект и выполнил тот же код, и файл записывается. Так что, возможно, у него есть что-то вроде проекта? –

+0

Я скопировал код выше в новом приложении, и он просто работает. Вы уверены, что используете код EXACTE, как указано выше? Также создайте fileName var следующим образом: 'NSString * fileName = [documentsDirectory stringByAppendingPathComponent: @" textfile.txt "];' – rckoenes

ответ

-2

пожалуйста, проверьте ниже код:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *filePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"textfile.txt"]; 
    NSString *temp = [[NSString alloc] initWithString:@"Test Content"]; 
    [temp writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
+3

Не просто отправьте код, объясните, что другое и почему! – rckoenes

+0

Checked out, downvote – Andy

-1

работает с URL-адресов немного надежным способом, так что я бы немного переработать свою идею, как, например, это:

NSURL *_documentFolder = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
NSURL *_fileURL = [_documentFolder URLByAppendingPathComponent:@"textFile.txt"]; 
NSError *_error = nil; 
BOOL _success = [@"hello!" writeToURL:_fileURL atomically:TRUE encoding:NSUTF8StringEncoding error:&_error]; 

, который отлично работает на тренажере и на реальном устройстве тоже, а файл textFile.txt будет иметь содержание hello!.


Примечание: если значение _success является FALSE, вы можете получить более подробную информацию о причине через в _error, даже если бы вы просто войти его в отладочной консоли. Я не изолировал NSString в моем примере, но вы можете заменить его своим собственным экземпляром.

+0

Прекрасный ... гений downvoted, не оставляя комментариев ... может ли чертова система быть переделана, наконец, заставив этих идиотов оставить комментарий? это не полезно для сообщества - потому что лично я понятия не имею, как мне улучшить ответ. если кто-нибудь, пожалуйста, оставьте мне подсказку. благодаря! – holex

0

Поскольку @rckoenes указал, что это была ошибка в остальной части моего кода. У меня есть функция, которая удаляет все файлы в «документах», я просто не помню, что у меня была эта функция, и из-за длины кода (> 5000 строк) было трудно найти. Спасибо вам всем!