2010-03-13 2 views
1

У меня возникла проблема с приложением какао, которое принимает значение текстового поля и записывает его в файл. Путь к файлу создается с помощью stringWithFormat: для объединения двух строк. По какой-то причине он не создаст файл, и консоль ничего не скажет. Вот мой код:Использовать stringWithFormat: как путь к файлу в какао

//Get the values of the text field 
NSString *fileName = [fileNameTextField stringValue]; 
NSString *username = [usernameTextField stringValue]; 

//Use stringWithFormat: to create the file path 
NSString *filePath = [NSString stringWithFormat:@"~/Library/Application Support/Test/%@.txt", fileName]; 

//Write the username to filePath 
[username writeToFile:filePath atomically:YES]; 

Спасибо за любую помощь

ответ

9

Проблема в том, что у вас есть тильды ~ в пути. ~ расширена оболочкой в домашнем каталоге пользователя, но это не происходит автоматически в Cocoa. Вы хотите использовать -[NSString stringByExpandingTildeInPath]. Это должно работать:

NSString *fileName = [fileNameTextField stringValue]; 
NSString *username = [usernameTextField stringValue]; 
NSString *fileName = [fileName stringByAppendingPathExtension:@"txt"]; // Append ".txt" to filename 
NSString *filePath = [[@"~/Library/Application Support/Test/" stringByExpandingTildeInPath] stringByAppendingPathComponent:fileName]; // Expand '~' to user's home directory, and then append filename 
[username writeToFile:filePath atomically:YES]; 
+0

Спасибо за ответ! – nosedive25

3

Добавление в ответ mipadi, это лучше использовать - [NSString stringByStandardizingPath], так как он делает больше - и может очистить больше проблем - не разрешение тильды.