我想將當前版本添加到我的應用程序的「約」部分。如此附件截圖中所示,Apple提供版本控制。如何向用戶顯示我的應用程序的當前項目版本?
如何在您的應用中顯示這些設置?
Screenshot of Target 'myApp' Info http://i35.tinypic.com/30c7ith.jpg
我想將當前版本添加到我的應用程序的「約」部分。如此附件截圖中所示,Apple提供版本控制。如何向用戶顯示我的應用程序的當前項目版本?
如何在您的應用中顯示這些設置?
Screenshot of Target 'myApp' Info http://i35.tinypic.com/30c7ith.jpg
鍵後繼續搜索和測試,我找到了自己的解決方案。
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSLog(@"%i Keys: %@", [infoDictionary count],
[[infoDictionary allKeys] componentsJoinedByString: @" ,"]);
這snipplet給了我下面的輸出:
20個按鍵:NSBundleResolvedPath,CFBundleVersion,NSBundleInitialPath,CFBundleIdentifier,NSMainNibFile,CFBundleIconFile,CFBundleInfoPlistURL,CFBundleExecutable,DTSDKName,UIStatusBarStyle,CFBundleDevelopmentRegion,DTPlatformName, CFBundleInfoDictionaryVersion,CFBundleSupportedPlatforms,CFBundleExecutablePath,CFBundleDisplayName,LSRequiresIPhoneOS,CFBundlePackageType,CFBundleSignature,CFBundleName
因此,解決辦法很簡單,只要:
NSString *version =[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"];
然而,這是不是的當前項目版本所看到的截圖,但plist文件的捆綁版本。
看着你Info.plist
文件,其中應該有像CFBundleVersion
和CFBundleShortVersionString
更多信息: http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/文章/ PListKeys.html#// apple_ref/doc/uid/20001431-102364 http://www.dribin.org/dave/blog/archives/2006/08/02/versioning_os_x_apps/ – 2009-09-29 13:00:47
ghommey - 有一個列表指南在developer.apple.com上進行編程。我相信你現在可以自己找到) – Eimantas 2009-09-29 13:13:10
構建信息中的那些項目不適用於您的構建應用程序。他們是佔位符,您可能會將其拉入您的應用程序。您的應用程序中包含的任何內容都是您放置在應用程序的Resources文件夾中的任何內容,如任何文本文件,plist或版本控制工程師的精美圖片。
現在,您可以使用特殊標識符(如$ {VERSION_INFO_PREFIX}或其他標記)將「構建信息」窗口中的一些項目拉入info.plist。如果您單擊上面包含的窗口中左側的任何項目,則可以使用這些標記。例如,單擊「當前項目版本」一詞並複製您在底部看到的標記「CURRENT_PROJECT_VERSION」。然後去你的plist文件,並添加一個條目。給它任何你想要的名字或者「當前工程版本」。粘貼在右側的$ {CURRENT_PROJECT_VERSION}中。現在,您可以通過編程方式從應用中獲取該值。當然,現在有人必須將該值輸入到Build Info窗口或其他地方的適當位置。只需要在info.plist文件中管理這個和像這樣的字段就可以了。這取決於你如何處理這些事情。
這裏是我得到的版本信息從我的info.plist的:
+ (NSString *) getAppVersionNumber;
{
NSString *myVersion,
*buildNum,
*versText;
myVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
buildNum = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
if (myVersion) {
if (buildNum)
versText = [NSString stringWithFormat:@"Version: %@ (%@)", myVersion, buildNum];
else
versText = [NSString stringWithFormat:@"Version: %@", myVersion];
}
else if (buildNum)
versText = [NSString stringWithFormat:@"Version: %@", buildNum];
NSLog(versText);
return versText;
}
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"];
總是返回我相同的值(初始版本),即使我改變從項目設置的版本,但。
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
有竅門。
CFBundleVersion - 彙編代碼。不是版本字符串。 – ETech 2016-01-19 02:46:54
對於這裏的懶惰是迅速的版本:
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString")!
NSBundle.mainBundle.infoDictionary[@"CFBundleShortVersionString"];
我認爲版本控制包括在XCode中爲你的項目添加倉庫和設置SCM,這可能不是你想要的版本(儘管我可能是錯的)。 – Eimantas 2009-09-29 13:53:36
如果您將plist文件中的CFBundleVersion值設置爲$ {CURRENT_PROJECT_VERSION},它將被替換爲來自構建設置的當前項目版本中的內容。然後你可以使用agvtool bump來增加內部版本號。 – mjk 2013-12-20 02:55:25
此外,如果需要,可以使用'CFString'' kCFBundleVersionKey'來代替硬編碼的字符串'@「CFBundleVersion」',如果需要的話,可以將其轉換爲'NSString',如上面的代碼所要求的。 – trss 2014-02-11 17:19:11