ios – 在Swift中获取Cocoa Touch Framework项目版本字符串

前端之家收集整理的这篇文章主要介绍了ios – 在Swift中获取Cocoa Touch Framework项目版本字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Cocoa Touch Frameworks提供版本控制支持,可以在版本控制部分的构建设置中找到.

要在运行时访问此值,我们可以使用FrameworkVersionNumber和FrameworkVersionString []变量,这些变量是我们在构建过程中自动生成的.

使用Swift项目时,可以在Objective-C兼容性标头的顶部自动生成这些项目:

//! Project version number for Framework.
FOUNDATION_EXPORT double FrameworkVersionNumber;

//! Project version string for Framework.
FOUNDATION_EXPORT const unsigned char FrameworkVersionString[];

但是,虽然可以从Swift访问FrameworkVersionNumber,但FrameworkVersionString []却不是.实际上看一下框架模块的内容,我可以看到只有第一个变量暴露给Swift:

//! Project version number for Framework.
var FrameworkVersionNumber: Double

这个问题是,由于FrameworkVersionNumber是Double,任何版本号如3.2.1只需更改为3.200000 ……

有谁知道这是否是我的项目设置中的缺陷,Xcode中的一个错误,或者是否有一种方法可以将Swift中的框架版本作为String或数组获取,这样我可以提供比major.minor更精细的版本控制?

解决方法

我实际上找到了这个问题的潜在解决方法,它不是那么干净但它确实有效:

默认情况下,当Xcode创建框架时,它将Version设置为1.0,Build设置为$(CURRENT_PROJECT_VERSION),这很好,因为这个值实际上是从Build Settings>中的Current Project Version字段复制的.版本.

那么在运行时获取此值的方法如下:

let bundle = NSBundle(identifier: "com.yourframework.Framework")! // Get a reference to the bundle from your framework (not the bundle of the app itself!)
let build = bundle.infoDictionary![kcfBundleVersionKey] as! String // Get the build from the framework's bundle as a String

这确实有效,但对于过去(我相信)可以从Objective-C中的变量轻松访问的东西感觉非常迂回.

原文链接:https://www.f2er.com/iOS/331892.html

猜你在找的iOS相关文章