2014-02-11 3 views
3

У меня возникла настоящая странная проблема с приложением iOS, в котором я сейчас работаю. Эффект существует только в том случае, если я тестирую приложение с использованием специального распределения. После обновления приложения (он должен быть установлен ранее) он работал неправильно. Я мог бы отслеживать ошибку вниз, и это вызвано следующую строку кода:iOS 7 Ошибка при создании папки после обновления приложения

[fileManager createDirectoryAtPath:folder withIntermediateDirectories:YES attributes:nil error:&error]; 

Теперь вы можете сказать, конечно: Не когда-либо писать в приложение расслоение себя, но базовый путь папка Документы с помощью:

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
imgDir = [docsDir stringByAppendingPathComponent:@"images"]; 
folder = [imgDir stringByAppendingPathComponent:md5]; // md5-Hash is created before 

полное сообщение об ошибке (записывается в системный журнал iphone) является:

ошибка домена = NSCocoaErrorDomain Code = 513 UserInfo "операция не может быть завершена (Cocoa ошибка 513.)." = 0x14d44f30 {NSFilePath =/var/mobile/Applications/280C6D36-3667-4589-A74F-42F3F17ABA71/D ocuments/images/39b6cd45a05a2276ef065b2ecf33b1eb, NSUnderlyingError = 0x14d4e340 «Операция не может быть выполнена. Операция не разрешена "}

Интересно, что если я удалю приложение перед установкой через ad hoc-дистрибутив (Testflight на iPhone 5 с iOS 7.0.4), папка будет создана, и приложение будет работать как ожидаемые. Единственными ссылками, которые я мог найти, были разработчики, которые не использовали stringByAppendingPathComponent или не писали напрямую в комплекте приложений. Может быть, у кого-нибудь еще была проблема или есть идея?

+1

Вы случайно пытаетесь написать одно и то же имя папки на одном и том же пути? –

+0

Поскольку я использую md5-Hash разных URL-адресов в качестве имени папки, я бы сказал: невозможно. Но, конечно, я просто дважды проверял и нет, папка не существует раньше. – 1024kilobyte

+0

+1 для очень хорошо написанного вопроса, включая документирование потенциальных решений, которые не сработали для вас или не применимы к вашему делу. –

ответ

1

Наконец-то я нашел причину, по которой папка не может быть создана. это выглядит довольно простым и глупым, но если бы вы могли взглянуть на полный исходный код, вы бы не поняли, как это может произойти. В моей защите я должен сказать, что я пришел к этому проекту для дальнейшей разработки, потому что оригинальный разработчик покинул проект . Для вашего лучшего Я много упрощал код.

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
imgDir = [docsDir stringByAppendingPathComponent:@"images"]; 

imgDir был фактически сохранен в НайтиСтраницу и прокси-класс всегда возвращается сохраненный путь, который является действительно плохая идея. Во время процесса обновления приложение получает новый указатель, который отражает путь к документам приложений. Поэтому попытка создать папку в папке с предыдущими версиями документов должна была завершиться неудачей, поскольку она больше не существует. Я исправил код, чтобы никогда не сохранять путь и всегда возвращать текущий код выше.

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