2016-04-21 13 views
5

Tôi có một dự án Xcode với một vài mục tiêu. Giả sử tên mục tiêu là AppFreeVersionAppPaidVersion. Họ chia sẻ cùng một codebase, nhưng tôi muốn thực hiện một số logic chỉ dành cho một trong các mục tiêu.Làm cách nào để lấy tên của mục tiêu hiện đang chạy trong Xcode?

Nếu không sửa đổi giao thức hoặc cài đặt của tôi, có cách nào để lấy chuỗi tên mục tiêu hiện tại của tôi không? Giải pháp được đưa ra in this question yêu cầu tôi chuyển một biến môi trường trong cài đặt xây dựng mà tôi không muốn làm.

Trả lời

5

Cách thêm ${TARGET_NAME} vào info.plist của bạn?

Và tôi đoán bạn đã biết làm thế nào để có được nó

obj-C

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name]; 

Swift

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

Điều này vẫn có sẵn trong Xcode 9? Tôi đã thêm nó vào Info.plist, nhưng dường như không hoạt động – brainray

0

Chỉ cần đặt tên mục tiêu trong Đề án của bạn -> Environment Variables -> thêm Tên và giá trị. ví dụ: targetName = "mytesttarget"

obj-c

NSDictionary * envir = [[NSProcessInfo processInfo] môi trường];

NSString * targetName = envir [@ "targetName"];

Swift

let envir = NSProcessInfo.processInfo(). Môi trường

hãy targetName = envir [ "targetName"]

5

Swift 3.0 Giải pháp.

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

CFBundleName không phải là tên mục tiêu – brainray

Các vấn đề liên quan