Как получить путь к файлу в приложении iPhone
У меня есть проблема с доступом к моим файлам в моем приложении.
В настоящее время я использую
//Directly from TileMap example from WWDC2010
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"Tiles"];
для доступа к моим плиткам для моего MKOverlay
. Это дает мне этот каталог
/Пользователи/xxxx/Library/Поддержка приложений /iPhone Simulator/4.2/Приложения/9D62025C-C53B-472C-8309-xxxx/xxxx.app/Tiles
x только для соображений конфиденциальности
У меня есть мои фрагменты в папке с именем Tiles
в корне моего приложения, которое находится в Xcode в группе с именем Tiles
, которая находится непосредственно в группе Resources
.
Когда я запускаю свое приложение, я получаю простую ошибку, говоря, что он не смог найти мои фрагменты в сгенерированном каталоге (одна цитата выше). Если я заменил этот фрагмент кода и сделаю это:
NSString *tileDirectory = @"/Users/xxxx/Documents/xxxx/Tiles";
Тогда мое приложение отлично работает. Это, очевидно, потому, что он находит мои плитки в прямом расположении на моем Mac. Это хорошо для тестирования, но мне нужно, чтобы он работал на моем iPhone/iPad.
Эта проблема может возникнуть из-за:
- Сгенерированный каталог неверен.
- Изображения с черепицей не попадают в созданный файл
.app
.
В любом случае, я не знаю, что делать, чтобы решить эту проблему.
Как я могу решить эту проблему?
[EDIT]
Я изменил эту часть кода на:
NSString *tileDirectory = [[NSBundle mainBundle] resourcePath];
Теперь он работает в симуляторе, потому что все файлы находятся в корневой папке приложений, и я не прошу ввести его в другой каталог под названием "Плитки".
Это работает без ошибок на симуляторе, но когда на моем iPhone он дает исходную ошибку (просто другой путь к файлу, но также заканчивается на /xxxx.app
Как я могу обеспечить каталог в моем файле приложения, например xxxx.app/Tiles
- TileMap делает это.
Ответы
Ответ 1
Помните, что "папки/группы", которые вы создаете в xcode, желтоватые, не отражаются как реальные папки в вашем приложении для iPhone. Они просто структурируют ваш проект XCode. Вы можете вложить столько же желтой группы, сколько хотите, и они все еще служат только для организации кода в XCode.
ИЗМЕНИТЬ
Создайте папку вне XCode, затем перетяните ее и выберите "Создать ссылки на папки для любых добавленных папок" вместо "Создать группы для любых добавленных папок" во всплывающем окне.
Ответ 2
Так как это ваши файлы в вашем приложении, я думаю, вы можете использовать pathForResource:ofType:
, чтобы получить полный путь к вашему файлу.
Вот пример:
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"your_file_name"
ofType:@"the_file_extension"];
Ответ 3
Если ваши фрагменты не находятся в вашем пакете, скопированы из пакета или загружены из Интернета, вы можете получить каталог, подобный этому
NSString *documentdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *tileDirectory = [documentdir stringByAppendingPathComponent:@"xxxx/Tiles"];
NSLog(@"Tile Directory: %@", tileDirectory);
Ответ 4
Вам нужно использовать URL-адрес ссылки, например:
NSURL *path = [[NSBundle mainBundle] URLForResource:@"imagename" withExtension:@"jpg"];
Он предоставит вам правильный URL-адрес.
Ответ 5
Вам нужно добавить свои плитки в свой ресурс. Я имею в виду добавить все эти файлы в ваш проект, убедитесь, что вы скопировали все файлы в каталог проекта.