В приложении Какао обычно мы можем установить комплект плагинов в одном из нескольких мест. Если, например, приложение называется «MyApp», вы сможете установить плагин по адресу:
- / Применения / MyApp.app / Содержание / PlugIns
- ~ / Библиотека / Поддержка приложений / MyApp / PlugIns
- / Библиотека / Поддержка приложений / MyApp / PlugIns
- / Сеть / Библиотека / Поддержка приложений / MyApp / PlugIns
Я создаю NSArray
путей для поиска в правильном порядке, но я почти уверен, что делаю это неправильно, так как мне кажется, что я делаю слишком много работы для чего-то, что Apple, кажется, предоставляет много функций для.
NSArray *systemSearchPaths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSAllDomainsMask, YES);
NSMutableArray *searchPaths = [NSMutableArray array];
NSFileManager *fileManager = [NSFileManager defaultManager];
for (NSString *systemPath in systemSearchPaths) {
NSString *systemPluginsPath = [systemPath stringByAppendingPathComponent:@"PlugIns"];
// FIXME: Remove debug code
NSLog(@"Considering plugin path %@", systemPluginsPath);
if ([fileManager fileExistsAtPath:systemPluginsPath]) {
[searchPaths addObject:systemPluginsPath];
}
}
[searchPaths addObject:[[NSBundle mainBundle] builtInPlugInsPath]];
В результате получается массив, возвращаемый NSSearchPathForDirectoriesInDomains
, со значением builtInPlugInsPath
, добавленным в конец.
Тем не менее, он фактически выполняет поиск в таких каталогах, как ~ ~ / Library / Application Support / PlugIns (отсутствует папка «MyApp»). Прежде чем я начну взламывать код для ввода имени моего приложения (которое может быть изменено в любое время), я делаю это неправильно?
Есть ли способ просто сказать Какао "дать мне все пути поиска для каталогов 'PlugIns'" для этого приложения "?