如何在代码中获取 iOS 项目的当前版本?
我希望能够将我的 iOS 项目/应用程序的当前版本作为 NSString
对象获取,而不必在文件中的某处定义常量。我不想在两个地方更改我的版本值。
当我在项目目标摘要中更改我的版本时,需要更新该值。
I would like to be able to get the current version of my iOS project/app as an NSString
object without having to define a constant in a file somewhere. I don't want to change my version value in 2 places.
The value needs to be updated when I bump my version in the Project target summary.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
您可以按如下方式获取版本和内部版本号:
或者在 Objective-C 中,
我在
UIApplication
的类别中具有以下方法:Gist: https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
这是 Objective-C 中的等效内容:
Gist: https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd
You can get the version and build numbers as follows:
or in Objective-C
I have the following methods in a category on
UIApplication
:Gist: https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
Here's the equivalent in Objective-C:
Gist: https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd
以下是在 Xcode 8、Swift 3 上运行的内容:
Here's what worked on Xcode 8, Swift 3:
在 Objective C 中:
1)要获取应用程序版本,您必须使用:
2)要获取构建版本,您必须使用:
In Objective C:
1)For getting App version you have to use a:
2)For getting Build version you have to use a:
[Swift 版本:5.2]
所有 iOS 应用程序都必须在其 Info.plist 文件中存储应用程序版本号,但没有内置方法可以将其作为可在代码中使用的字符串。
我为 UIApplication 创建了一个小扩展,它读取 Info.plist 文件并自动返回版本号。
这是代码:
在控制器内部
[Swift version: 5.2]
All iOS apps must store an app version number in their Info.plist file, but there’s no build-in way to get that as a string you can use in your code.
I have created one small extension to UIApplication that reads the Info.plist file and returns a version number automatically.
Here’s the code:
Inside Your Controller
在 Swift 中,您可以通过以下方式获取捆绑版本:
In Swift, you can get bundle version by using:
我的一个开源项目,应用程序更新跟踪器,以类方法的形式提供此功能(以及更多功能):
+ (NSString *)getShortVersionString
+ (NSString *)getLongVersionString
您将像这样使用它:
An open source project of mine, App Update Tracker, offers this functionality (and more) in the form of class methods:
+ (NSString *)getShortVersionString
+ (NSString *)getLongVersionString
You would use it like so:
因此,这里分别提供了这两个版本的 Swift 版本:
它包含在此存储库中,请查看:
https://github。 com/goktugyil/EZSwiftExtensions
So heres a Swift version for both of these separately:
Its included in this repo, check it out:
https://github.com/goktugyil/EZSwiftExtensions
仅供参考
要获取任何键的本地化值,您应该使用
CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), "CFBundleShortVersionString" as CFString)
Just for note
To obtain localized value of any key you should use
CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), "CFBundleShortVersionString" as CFString)