【问题标题】:iOS XCode: How to load a value from a user-defined setting from build settings at run timeiOS XCode:如何在运行时从构建设置中加载用户定义的设置值
【发布时间】:2016-03-23 06:57:30
【问题描述】:

我在代码中有以下常量:

static NSString* const MyUrl = @"www.myurl.com";

是否有可能创建一个用户定义的设置并分配一个可以在运行时或存档期间替换 MyUrl const 的值?

我的情况如下:我有一个具有各种目标的项目。每个目标指向代码中的不同 URL。如果我可以通过用户定义的设置来管理 URL,而不是每次更改目标时都必须更改代码,那就太好了。

【问题讨论】:

  • 您希望设置包含在应用中还是由用户输入?
  • 该设置将包含在应用程序中。

标签: ios objective-c xcode6.4


【解决方案1】:

考虑使用 info.plist 来存储这些值。

【讨论】:

    【解决方案2】:

    不,您不能更改 const 变量的值。

    你可以通过简单的NSString *myURL = @"www.url.com"来改变URL字符串的值;

    并在AppDelegate 中使用全局变量,并在项目的任何位置使用它。

    【讨论】:

    • 考虑使用 info.plist 来存储这些值。
    • @ArikSegal 请添加您的建议作为答案,我会将其标记为答案
    【解决方案3】:

    您可以为此目的使用预处理器宏。转到 Xcode>Project>Target>Build Settings>Preprocessor Macros。然后为每个构建配置(调试、发布等)添加一个特定于目标的宏。在您的源代码中,您现在可以通过使用#ifdef 引用宏来识别您的目标。

    例子:

    #ifdef TARGET1
    static NSString* const MyUrl = @"www.myurl.com";
    #endif
    
    #ifdef TARGET2
    static NSString* const MyUrl = @"www.myur2.com";
    #endif
    

    下图描述了构建设置中 TARGET 宏的声明-

    【讨论】:

      【解决方案4】:

      我认为您需要使用数据库或应用程序之外的任何其他来源。并在 URL 字符串更改时获取它,您可以在代码中使用 NSString 变量。您可以使用parse 来满足您的需要(但是,Parse 将在明年停止他们的服务,但您可以使用很多免费的在线数据库)。使用此方法,您无需更改代码即可更新 URL 字符串。我希望我能正确地得到你需要的东西。

      【讨论】:

      • 奇怪的是我的答案是“-”。当我检查其他答案和问题时,我需要问“在发布应用程序后如何更改 URL 字符串而不发布新的二进制文件?”。任何一个问题都不对,或者我在这里遗漏了一些东西。如果我检查答案,现在问题似乎很奇怪。 “用户定义”短语与我所知道的不同......
      • 1.这是关于交换目标,并且是在发布新的二进制文件之前。 2. 用户不是指“最终用户”或“应用程序用户”,在这种情况下,它指的是构建目标,因为目标是使用设置的人。
      猜你喜欢
      • 2012-04-08
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2015-01-26
      • 2011-11-10
      • 2011-08-28
      相关资源
      最近更新 更多