[ios] Swift로 버전 및 빌드 정보 얻기

버전 및 빌드 정보를 검색하기 위해 Main NSBundle에 대한 액세스 권한을 얻으려고합니다. 문제는 신속하게 시도하고 싶습니다 .Objective-C에서 Build.text = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];. 그러나 나는 신속하게 시작해야 할 곳을 모르고 새로운 구문으로 작성하려고 시도했습니다.



답변

Swift 구문에 어떤 문제가 있습니까? 이것은 작동하는 것 같습니다.

if let text = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
    print(text)
}


답변

Swift 3/4 버전

func version() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let version = dictionary["CFBundleShortVersionString"] as! String
    let build = dictionary["CFBundleVersion"] as! String
    return "\(version) build \(build)"
}

Swift 2.x 버전

func version() -> String {
    let dictionary = NSBundle.mainBundle().infoDictionary!
    let version = dictionary["CFBundleShortVersionString"] as String
    let build = dictionary["CFBundleVersion"] as String
    return "\(version) build \(build)"
}

여기 에서 볼 수 있습니다 .


답변

Xcode 6의 최종 릴리스를 위해

NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String

“?” 여기서 infoDictionary 뒤의 문자가 중요합니다.


답변

다음은 빌드 및 버전을 얻는 간단한 방법입니다.

Swift 4.X의 경우

 if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
     print(version)
   }

 if let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
     print(build)
   }

Objective C의 경우

NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

NSString * currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

문제가 있으면 알려주세요. 이것은 나를 위해 일하고 있습니다.


답변

AppName, AppVersionBuildNumber…에 대한 신속한 방법

if let dict = NSBundle.mainBundle().infoDictionary {
   if let version = dict["CFBundleShortVersionString"] as? String,
       let bundleVersion = dict["CFBundleVersion"] as? String,
       let appName = dict["CFBundleName"] as? String {
           return "You're using \(appName) v\(version) (Build \(bundleVersion))."
   }
}


답변

신속하게 UIApplication의 확장으로 다음과 같이 만들 것입니다.

extension UIApplication {

    func applicationVersion() -> String {

        return NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
    }

    func applicationBuild() -> String {

        return NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey as String) as! String
    }

    func versionBuild() -> String {

        let version = self.applicationVersion()
        let build = self.applicationBuild()

        return "v\(version)(\(build))"
    }
}

그런 다음 다음을 사용하여 필요한 모든 것을 얻을 수 있습니다.

let version = UIApplication.sharedApplication.applicationVersion() // 1
let build = UIApplication.sharedApplication.applicationBuild() // 80
let both = UIApplication.sharedApplication.versionBuild() // 1(80)


답변

// 앱의 버전 번호를 반환합니다.

public static var appVersion: String? {
    return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
}

// 앱의 빌드 번호 반환

public static var appBuild: String? {
    return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String
}