Я столкнулся с «интересной» (или очень расстраивающей) проблемой.Мне нужно импортировать файл, и чтобы избежать необходимости выбирать одно и то же имя файла снова и снова, я разрешаю пользователю сохранять имя по умолчанию.Это имя хранится в NSUserDefaults.Ничего странного здесь.
Но, если я перезапущу программу, NSURL будет восстановлен правильно (я проверил, используя NSLog AND isEqualtTo
), но [NSString stringWithContentsOfURL] вернет nil (fileExistsAtPath также возвращает false),Но если я вручную выбрал тот же файл, он загружается без проблем.
Итак, очевидно, URL-адрес, полученный из NSUserDefaults, каким-то образом изменяется, даже если в NSLog он выглядит совершенно одинаково ... Следующая строкастрока, которая возвращает nil, когда fileName заполнено из NSUserDefaults:
NSString* fileContents = [NSString stringWithContentsOfURL:fileName encoding:NSUTF8StringEncoding error:nil];
Вот как URL хранится в NSUserDefaults:
defaults = [NSUserDefaults standardUserDefaults];
if ([specialtyFileName isNotEqualTo:nil]) {
[defaults setURL:specialtyFileName forKey:@"SpecialtyFile"];
}
[defaults synchronize]
И вот как я его получаю:
specialtyFileName = [defaults URLForKey:@"SpecialtyFile"];
Файл, который я тестирую, является локальным файлом, поэтому проблемы с подключением не должны быть проблемой.Я немного растерялся.Я храню их неправильно?Или поиск?Должен ли я как-то подготовить URL?Я ничего не могу найти по этому поводу.
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: я работаю на OSX, а не на мобильном устройстве.Кроме того, файл, который я использую, не находится в каком-либо определенном пути, связанном с приложением.Может ли быть так, что ему не разрешен доступ к чему-либо за пределами вашей собственной песочницы, если он специально не выбран пользователем через диалоговое окно?
Joris