如何在Xcode iOS的info.plist文件中使用代码值

3

我希望在info.plist文件中使用一些自定义常量,以便全局使用。例如:

<key>FacebookAppID</key>
<string>$(my_custom_constant)</string>
  1. 如何使这个常量保持不变?
  2. 我该如何在选择调试模式和发布模式时进行区分?例如,FacebookAppID 在调试模式下为“abc”,在发布模式下为“xyz”。

1
info.plist 在运行时是只读的,你的目标是什么? - holex
我在我的应用程序中使用了Facebook API,并在Facebook上创建了两个不同的应用程序,一个用于调试,另一个用于发布。每当我进行发布构建时,我也必须更改info.plist。我只想通过单击一次来制作我的发布构建。 - Aqeel Ahmad
2个回答

6
在 info.plist 中设置自定义变量,如下所示。此处以 "HockeyAppID" 为例。 enter image description here 接下来,在您的情况下,在“用户定义”的构建设置中添加调试和发布配置的变量,如下所示。这里,我有自己的四个不同配置。 enter image description here 正如您所知,根据方案中的设置,将在运行时加载不同的配置值。为了从 info.plist 中访问调试 / 发布配置的 HockeyAppId,请执行以下操作。
 enum InfoPlistKey {
   static let hockeyappID = "HockeyAppID"
 }

 struct AppSettings {

   private static var infoDict: [String: Any] {
      if let dict = Bundle.main.infoDictionary {
          return dict
      } else {
          fatalError("Info Plist file not found")
      }
   }

   static let hockeyAppID = infoDict[InfoPlistKey.hockeyappID] as! String
 }

现在,你可以通过 Info.plist 访问 HockeyAppId 的值,如下所示:

let identifier = AppSettings.hockeyAppID

如有任何问题,请告知。


3
您可以在构建设置中将变量作为“用户定义设置”添加到您的目标中来创建变量。然后,您可以为每个构建配置设置不同的变量值。
请参见附带的截图。您可以忽略我的Beta Prod和Beta Test配置,因为它们可能与您的情况无关。 enter image description here

1
我这样做了:“然后,您可以为每个构建配置设置不同的变量值。” 因此,将其设置为2以用于调试配置,并将其设置为3以用于发布配置。 - rodskagg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接