NSBundle mainBundle 返回 nil

NSBundle mainBundle returning nil

我正在尝试根据 Xcode 中的构建配置为我们的 iOS 应用程序更改服务器设置。我使用 this guide 作为基础。我在 Info.plist 中设置了配置 属性 但是当我尝试在代码中获取它时它又回来了 nil.

在寻找解决方案和测试的过程中,我发现我正在从与 mainBundle 相关的所有事情中回来 nil。到目前为止,这是我在测试中声明的内容。我 missing/doing 哪里错了?

NSBundle *bundle = [NSBundle mainBundle];
NSString *configuration = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Configuration"];
NSString *bundleName = [[NSBundle mainBundle] bundleIdentifier];
NSString *otherName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleNameKey];

我正在使用 Xcode 9.3.

在某些情况下,例如当您的代码直接从 Interface Builder 中执行时,mainBundle 不是 return 对象。因此,根据您的上下文,您可能希望使用 bundleForClass: 代替。指定驻留在您想要的捆绑包中的 class。

NSBundle *bundle = [NSBundle bundleForClass:[YourClass class]];

原来我从发布配置中复制了我的调试配置。我注意到一些调试属性不一样。所以我删除并重新创建了新配置。这解决了这个问题。如果有人对发布版本中未找到捆绑包信息的原因有任何具体说明,请发表评论。