ios - 在构建时覆盖 NSUserDefault 首选项

标签 ios objective-c xcode plist nsuserdefaults

我希望能够在构建时在我的 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/

相关文章:

ios - 如何更新一个 xcode 实例?

ios - 如果图像的外部边界 react native ,如何剪掉图像

objective-c - iPhone本地是否有类似Xcode的输出日志?

ios - CNContactPickerViewController 即使在禁用设置访问后也会显示

iphone - 如何从 UILabel 创建图像?

ios - 将配置文件与 iOS 应用程序捆绑在一起

ios - iOS 中 RSSI 的卡尔曼滤波器

ios - 无法使用类型为 ( ['NSObject' )、forKey : String) 的参数列表调用 updateValue

ios - 如何从主视图中的特定位置淡入 UIVIew

c++ - 如何使用动态库在 Xcode 中为 OSX 10.4、10.5 和 10.6 构建 C++