Подтвердить что ты не робот

Как получить путь к файлу в приложении 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 делает это.

4b9b3361

Ответ 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

Вам нужно добавить свои плитки в свой ресурс. Я имею в виду добавить все эти файлы в ваш проект, убедитесь, что вы скопировали все файлы в каталог проекта.