Tag: nsbundle

iOS App Bundle中的多个本地化.strings文件

我有一个相当复杂的项目,由几个大型本地化子项目组成。 我的大部分子项目都是通过一个Localizable.strings文件本地化的 。 该文件被复制到一个SubProjectName.bundle目标中,该目标与主项目中的一个SubProjectName.a静态库一起使用。 这工作正常。 但是,我的一个子项目包含许多本地化的.strings文件。 无论设备(或模拟器)如何configuration, 该项目都无法读取除英语以外的任何语言的string 。 例如,这行代码总是返回英文string: [[NSBundle myResourcesBundle] localizedStringForKey:@"MY_TEST_STRING" value:@"" table:@"MyTable"] 其中MyTable对应于本地化为多种语言的MyTable.strings文件。 当我浏览.app包时,所有的本地化都在那里,坐在应用程序中的“MyBundle.bundle”资源中。 但是,以下代码正确地查找了所有本地化中给定string的翻译: for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) { NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle myResourcesBundle] pathForResource:language ofType:@"lproj"]]; NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"MY_TEST_STRING", @"MyTable", bundle, nil)); } 所以,当这个包是实际的MyBundle.bundle/<LanguageCode>.lproj文件夹时,string查找工作。 但是显然,这打破了iOS提供的自动查找的目的。 (请注意,上面的[NSBundle myResourcesBundle]只是一个静态方便的方法来获取我的自定义的子项目的包)。 – 编辑 :我一直在试验这一些,如果我从我的子项目的捆绑删除en.lproj文件夹,然后它正确地使用设备或模拟器的区域设置。 例如,我有: MyApp.app/ | – MyResources.bundle/ | […]

在iOS上加载NSBundle文件

我想创build一个具有非常灵活的graphics用户界面( skinnable )的项目。 为了使这成为可能,我想从外部资源,例如一个网站加载一个NSBundle。 该包应该包含与主项目中的一些属性和方法(IBOutlets&IBActions)相对应的nib, 看来苹果已经限制了以这种方式使用NSBundle的可能性。 有什么办法可以使这项工作? 如果以传统的方式不可能的话,那么可以推荐的替代方法是什么?

在iOS上写一个文件

我如何在iOS上编写文件? 我试图用下面的代码做,但我做错了什么: char *saves = "abcd"; NSData *data = [[NSData alloc] initWithBytes:saves length:4]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"]; [data writeToFile:appFile atomically:YES]; 我在资源上创build了MyFile.txt。