Пользовательские плитки не загружаются из папки "Документы"

Я использую следующий код для загрузки пользовательских плиток карты в свое приложение. Когда я использую mainBundle в качестве пути, он работает как положено:

NSString *baseURL = [[[NSBundle mainBundle] bundleURL] absoluteString];
NSString *urlTemplate = [baseURL stringByAppendingString:@"/tiles/{z}/{x}/{y}.png"];
self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
self.tileOverlay.canReplaceMapContent=YES;
[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];

НО, если я пытаюсь изменить путь к папке с документами (потому что я планирую загрузить папку плиток и сохранить их в папке документов), следующий код не работает:

NSString *destinationPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *urlTemplate = [destinationPath stringByAppendingString:@"tiles/{z}/{x}/{y}.png"];

self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
self.tileOverlay.canReplaceMapContent=YES;
[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];

Любой намек будет полезен!

Примечание: папка плиток существует на моем пути. Более конкретно следующий код возвращает YES

NSString* foofile = [destinationPath stringByAppendingPathComponent:@"/tiles/17/70759/49235.png"]; //as an example
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

1 ответ

Решение

Я только что узнал, почему код не работает.

Путь к документам должен быть:

NSString *destinationPath = [[self applicationDocumentsDirectory]  absoluteString];

вместо:

NSString *destinationPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

где applicationDocumentsDirectory:

 - (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

Следующая ссылка /questions/27170794/proverte-suschestvuet-li-fajl-po-url-vmesto-puti/27170811#27170811 поможет мне найти другой способ получения пути к документам.

Другие вопросы по тегам