Ответ 1
Ну, я обнаружил ошибку, которую я совершал, добавляя группу в проект вместо добавления реального каталога для более инструкций
У меня есть файл paylines.txt
, добавленный внутри папки с именем TextFiles
, который находится внутри папки Resources
моего проекта iOS в Xcode.
Это код, который я использую для доступа к файлу:
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"];
NSLog(@"\n\nthe string %@",filePath);
Код печатает:
2011-06-07 14:47:16.251 slots2[708:207]
the string (null)
Ну, я обнаружил ошибку, которую я совершал, добавляя группу в проект вместо добавления реального каталога для более инструкций
У меня тоже была такая же проблема. Решение, которое я нашел, (в xcode 4.x):
Перейти к: Цель → "Сформировать фазы" → "Ресурсы копий" Затем добавьте этот файл. Если этот файл уже добавлен, удалите его и добавьте снова.
очистить проект и RUN. Он работает.:)
Попробуйте это, это работает для меня.
NSString *str = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"];
Для симулятора
NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"];
Когда я перетаскиваю файлы, поле "Добавить в целевые объекты" по умолчанию не отмечено. Если я оставлю его без отметки, то у меня возникнет проблема. Исправьте его, удалив файлы, а затем перетащите их обратно, но обязательно отметьте "Добавить в целевые объекты".
Вы пытаетесь сделать это внутри XCTest и на грани разгрома вашего ноутбука? Это нить для вас: Почему код внутри внутренних тестов не находит ресурсы пакета?
Все, что вам нужно сделать, это убедиться, что установлен флажок, указанный ниже.
Перейдите в "Target" → "Build Phases", выберите свою цель, выберите вкладку "Сборка фаз", нажмите "Добавить фазу сборки" и выберите "Добавить файлы копирования". Измените пункт назначения на "Каталог продуктов". Перетащите файл в раздел "Добавить файлы".
В случае Mac OSX,
Перейдите к Целям → Построить фазы нажмите +, чтобы скопировать новые фазы сборки файлов. Выберите каталог продуктов и отпустите файл.
Очистите и запустите проект.
После ответа @Neelam Verma или ответа @dawid, который имеет тот же конечный результат, что и @Neelam Verma, разница в том, что ответ @dawid начинается с перетаскивания файла в проект Xcode и @Neelam Verma ответ начинается с того, что файл уже является частью проекта Xcode, я все равно не смог получить NSBundle.mainBundle().pathForResource("file-title", ofType:"type")
для поиска моего видеофайла.
Я подумал, что, возможно, потому, что мой файл был в группе, вложенной в проект Xcode, поэтому я переместил видеофайл в корень моего проекта Xcode, все равно не повезло, это был мой код:
guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else {
print("Invalid video path")
return
}
Первоначально это было имя моего файла: testVid1.MP4
, переименование видеофайла на testVid1.MP4
исправил мою проблему, поэтому, по крайней мере, строковый аргумент ofType
чувствителен к регистру.
Выберите Project/Specific Folder → Right Click → Добавить файлы в Project → Выберите файл, который вы хотите добавить.
Это сработало для меня.