2011-10-31 26 views
35

Tôi tự hỏi nếu có cách nào để có được phiên bản ứng dụng của riêng bạn trong mã sau khi bạn đặt nó trong tab "Tóm tắt" trong xCode. Một cách có vẻ là tìm kiếm Info.plist cho khóa CFBundleVersion, nhưng có cách nào khác, dễ dàng hơn, thuận tiện hơn không?Cách tải phiên bản ứng dụng của riêng bạn từ xcode?

+0

có thể trùng lặp của [Làm thế nào ứng dụng iphone của tôi có thể phát hiện số phiên bản của riêng nó?] (Http://stackoverflow.com/questions/458632/how-can-my-iphone-app-detect-its-own-version-number) –

Trả lời

113

Bạn có thể tìm nó trong gói chính. Tôi nghĩ đó là một cái gì đó như:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 
+0

Vâng, tôi vừa tìm thấy một blog (http://pigtailsoft.com/blog/?p=35) nói rằng. Dù sao cũng cảm ơn bạn! Sẽ chấp nhận câu trả lời sau 6 phút :) –

+11

Cảm ơn bạn, nhưng '@" CFBundleVersion "' trả về bản dựng không phải phiên bản. Bạn sẽ nhận được đối tượng này: '@" CFBundleShortVersionString "' – IgniteCoders

12
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 
27

Tôi thường sử dụng số lượng xây dựng (CFBundleVersion) để theo dõi, tốt, số lượng xây dựng, và số lượng bản (CFBundleShortVersionString) cho mục đích tiếp thị. Tôi sử dụng tập lệnh chạy để tự động tăng số bản dựng của mình và tôi cập nhật số phiên bản theo cách thủ công trước mỗi bản phát hành mới. Vì vậy, nếu bạn muốn bao gồm số lượng bản thực tế trong mã của bạn như trái ngược với số lượng xây dựng, sử dụng này:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] 

hoặc

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

Dưới đây là kịch bản chạy mà increments số xây dựng cho bất cứ ai quan tâm :

#!/bin/bash 

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}" 
2

Đối Swift:

Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") 
Các vấn đề liên quan