2016-04-21 46 views
5

我有一個包含多個目標的Xcode項目。假設目標名稱是AppFreeVersionAppPaidVersion。他們共享相同的代碼庫,但我想實現一些僅用於其中一個目標的邏輯。如何獲取當前在Xcode中運行的目標的名稱?

沒有修改我的計劃或建立設置,有沒有辦法讓我當前的目標名稱的字符串?給出的解決方案in this question要求我在構建設置中傳遞一個環境變量,這是我不想做的。

回答

5

如何在您的info.plist中添加${TARGET_NAME}

我猜你已經知道如何在您的計劃得到它

對象 -

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name]; 

斯威夫特

let targetName = NSBundle.mainBundle().infoDictionary?[key_name] as String 
+0

這仍然可用於Xcode 9嗎?我將它添加到Info.plist中,但它似乎不起作用 – brainray

0

只要設定目標的名字 - >環境變量 - >添加名稱和價值。 例如:目標名稱= 「mytesttarget」

的OBJ-C

的NSDictionary * ENVIR = [[NSProcessInfo processInfo]環境]。

NSString * targetName = envir [@「targetName」];

夫特

設ENVIR = NSProcessInfo.processInfo()。環境

讓目標名稱= ENVIR [ 「目標名稱」]

5

夫特3.0解決方案。

func getTargetName() -> String { 
    return Bundle.main.infoDictionary?["CFBundleName"] as! String 
} 
+0

CFBundleName不是目標名稱 – brainray

相關問題