Как получить путь к файлу js в iOS? - PullRequest
1 голос
/ 05 марта 2012

Я перетащил файл .js в свой проект. Я хочу загрузить его, но он не работает. Это дает мне нулевой путь.

Это первый раз, когда я пытаюсь найти путь

NSString *path = [[NSBundle mainBundle] pathForResource:@"SearchWebView" ofType:@"js"];

это не работает. Тогда я думаю, что мне может понадобиться скопировать его в Documents /

Итак, я запускаю файл копирования

- (NSString *)getJSFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];
    return [documentsDir stringByAppendingPathComponent:@"SearchWebView.js"];
}

- (void) copyJSFileIfNeeded{
    //Using NSFileManager we can perform many file system operations.
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSString *jsPath = [self getJSFilePath];
    BOOL success = [fileManager fileExistsAtPath:jsPath]; 

    if(!success) {
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"SearchWebView.js"];
        success = [fileManager copyItemAtPath:defaultDBPath toPath:jsPath error:&error];
        if (!success){ 
            //NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
        }
    }
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    [self performSelector:@selector(copyJSFileIfNeeded)];

}

Это не создает новый файл копии в моей папке документов. Не знаю почему? Я могу использовать тот же метод для копирования файлов plist или sqlite, но «файл .js» не является ответом. Я также проверяю, находится ли файл именно в моем комплекте проекта.

enter image description here

1 Ответ

13 голосов
/ 05 марта 2012

Когда вы добавляете файл JavaScript, XCode обнаруживает, что файл является файлом с исходным кодом, предполагает, что вы хотите скомпилировать его, и автоматически добавляет его в фазу сборки Compile Sources .

Чтобы остановить Xcode, пытающийся скомпилировать его и вместо этого заставить его скопировать файл, разверните свою цель в списке групп и файлов, удалите файл JavaScript из фазы сборки Compile Sources и добавьте его в CopyРесурсы комплекта фаза сборки.

Для Xcode 4 щелкните по основному проекту, щелкните по этапам сборки, и вы найдете Компилируемые источники и Копирование ресурсов комплекта , подробные шаги ниже -

  1. Project Navigator (Cmd + 1)
  2. Выберите ваш проект
  3. Выберите цель
  4. Выберите "Фазы сборки"вкладка, там вы получите нужные разделы.
  5. Добавьте нужный файл js для копирования ресурсов комплекта и удаления из исходников компиляции
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...