NSURL нулевой в симуляторе, но хорошо на iPad - PullRequest
4 голосов
/ 16 ноября 2010

Я пытаюсь загрузить аудиофайл в AVAudioPlayer на iPad.Когда я запускаю его на iPad, он находит его в комплекте.Однако, если я пытаюсь запустить его через симулятор, я получаю нулевую ошибку для NSURL.Вот фрагмент кода (num - произвольное целое число):

NSString *name = [NSString stringWithFormat:@"st-answermachine-%i", num];
NSLog(@"name = %@", name);
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"m4a"];
NSLog(@"path = %@", path);
NSURL *url = [NSURL URLWithString:path];
NSLog(@"url = %@", url);

В симуляторе консоль отладчика отслеживает следующее:

name = st-answermachine-1

path = / Пользователи / joe / Библиотека / Поддержка приложений / iPhone Simulator / 3.2 / Приложения / B85E9CC8-6E39-47B9-XXXX-1E3A2CE145D1 / MyApp.app / st-answermachine-1.m4a

url = (null)

Но если я попробую это на устройстве, я получу это:

name = st-answermachine-1

путь= /var/mobile/Applications/116DA1CB-EA13-4B80-XXXX-EBD46C8E2095/MyApp.app/st-answermachine-1.m4a

url = / var / mobile / Applications / 116DA1CB-EA13-4B80-XXXX-EBD46C8E2095 / MyApp.app / st-answermachine-1.m4a

Любые идеи, почему у меня может возникнуть эта проблема, пожалуйста?

Спасибо!

1 Ответ

16 голосов
/ 16 ноября 2010

URLWithString: ожидает строку, содержащую фактический URL-адрес в качестве параметра (например, http://blah/' или file: /// blah).URL-адреса не могут содержать пробелы (как путь симулятора), и поэтому он терпит неудачу.

Как подсказывает Эван, вам нужно использовать fileURLWithPath: для преобразования строки пути в объект URL.

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