#objective-c #nsbundle #localized
#objective-c #nsbundle #локализованный
Вопрос:
Ребята из Коничива, я ломаю голову над нестандартной процедурой чтения кучи локализованных XML-файлов, расположенных в моем проекте.
Моя цель — рекурсивно прочитать все эти файлы, чтобы передать базу данных coredata sqlite для создания различных версий одной и той же базы данных на основе lang.
Во-первых, я попробовал старую школьную технику, например:
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundleRoot error:nil];
NSArray *onlyXMLs = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.xml'"]];
for (NSString *tString in onlyXMLs) {
/* stuff */
}
совсем не повезло, потому что он выдает все нелокализованные XML-файлы в моем проекте и ничего больше.
итак, мне было интересно, есть ли способ получить эти проклятые не локализованные XML-файлы.
заранее спасибо.
Если у вас есть сомнения или вопросы, не будьте незнакомцем, напишите мне.
-k-
Ответ №1:
хорошо, решено!
для тех, кто ищет ответ на проблему, вот решение:
NSArray *onlyXMLs = [[NSBundle mainBundle] pathsForResourcesOfType:@"xml" inDirectory:nil forLocalization:@"English"];
помните, что параметр, который содержит нужный язык
, всегда должен совпадать с параметром каталога .plist, содержащего нужные файлы в вашем проекте.
итак, если у вас есть English.plist с нужным вам материалом, это также должна быть строка имени для передачи (как показано в приведенном выше примере), в противном случае, если вы имеете дело с en.plist, @»en» должно быть строкой.
вот и все, вот и все.