Ну, я не совсем уверен, почему это происходит сбой.Судя по всему, вы ничего не делаете в корне неправильно.Я предполагаю, что это как-то связано с путем к файлу или отсутствием файла.Строка, которая его убивает, [NSURL fileURLWithPath:path]
, и вы можете пропустить эту строку, используя - (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)ext subdirectory:(NSString *)subpath
вместо pathForResource:
.Не уверен, что это решит вашу проблему, но это стоит попробовать.
Редактировать: о-о, одно отличие между симулятором и устройством - файловая система на устройстве чувствительна к регистру, хотя она не включенаosx / симулятор.Может ли быть проблема в имени вашего файла или пути к файлу?
Попробуйте некоторые NSLog, чтобы увидеть, в чем проблема.
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"localHTML/mobile"];
NSLog(@"Path is %@",path);
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"URL is %@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
Если вы видите в консоли «Путь»равен нулю ", значит, вы указали что-то не так в своем вызове pathForResource
.
Мысль:
Если вы добавили файлы в проект Xcode, но не включили их в сборкуtarget, они не будут добавлены в комплект приложений.
, если localHTML и mobile являются «группами» в XCode, а не фактическими папками, они игнорируются при компиляции приложения.Группы XCode ничего не значат по отношению к скомпилированному приложению (обратитесь к ссылкам на папки, чтобы узнать, как создать папки в комплекте приложений).