Проверка наличия файла в комплекте - PullRequest
2 голосов
/ 05 апреля 2011

Как мы можем проверить, присутствует ли файл во внешнем пакете, загруженном в приложение, или нет перед его загрузкой?

Ответы [ 2 ]

13 голосов
/ 20 сентября 2011

Чтобы проверить, существует ли файл в комплекте, используйте класс NSBundle.

NSString *path = [[NSBundle mainBundle] 
                            pathForResource:@"somefileinbundle" 
                            ofType:@"png"];
if (!path)
   NSLog(@"Unable to find file in bundle");

Сказав это, однако, обычно плохая идея проверить, существует ли файл сначала, прежде чем пытаться загрузитьЭто.Согласно документам Apple на NSFileManager fileExistsAtPath:

Попытка предикатного поведения на основе текущего состояния файловой системы или конкретного файла в файловой системе не рекомендуется.Это может вызвать странное поведение в случае состязания файловой системы. Гораздо лучше попытаться выполнить операцию (например, загрузить файл или создать каталог), проверить ошибки и изящно обработать любую ошибку, чем пытаться заранее выяснить, будет ли операция успешной. Для получения дополнительной информации о состоянии гонки в файловой системе см. «Избегание условий гонки и небезопасных операций с файлами» в Руководстве по безопасному кодированию

4 голосов
/ 05 апреля 2011

Если вы хотите узнать, есть ли он там, чтобы вы могли решить, загружать его или нет, я просто попытался бы загрузить его и проверить, равен ли возвращаемый объект нулю. Если это так, вы знаете, что его нет в комплекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...