我希望能够在构建时在我的 iOS 项目中设置应用首选项。我知道我可以在 xcode 中创建不同的目标,但我认为随着我可能最终做出的首选项数量的增加,我最终可能会在我的项目中遇到噩梦般的目标数量。
一个简单的示例是为名为“金额”的默认值设置默认整数。目前“金额”在我的应用程序中名为“preferences.plist”的 plist 文件中定义。我加载该 plist 文件并在 NSUserDefaults 上使用该 plist 注册默认值。
NSURL *preferencesFile = [[NSBundle mainBundle] URLForResource:@"preferences" withExtension:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfURL:defaultPreferencesFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:preferences];
我假设我可以在构建之前编写一个脚本来修改 preferences.plist 文件,然后再构建它。然而,当我需要修改一堆不同的偏好时,我认为这可能会成为一场噩梦。
结束游戏是让 jenkins 构建我的 IPA。我想轻松创建多个 jenkins 构建,这些构建将指向基于相同代码但使用不同首选项构建我的应用程序。
Android 具有多种风格,并且能够设置资源值。 iOS 是否有类似的东西可以用来构建这些不同“风格”的应用程序?
最佳答案
我使用 Jenkins 构建操作在 Xcode 构建之前将适当的变量注入(inject)到 plist 中:
plutil -replace MyBuildBranch -string ${BRANCH} MyProj/MyProj-Info.plist
然后我在运行时使用类似的东西读取该值:
NSBundle * bundle = [NSBundle bundleForClass:[AppDelegate class]];
NSString * myBuildBranch = bundle.infoDictionary[@"MyBuildBranch"]
关于ios - 在构建时覆盖 NSUserDefault 首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282034/