J'ai une application IOS avec un back-end Azure et je souhaite enregistrer certains événements, comme les connexions et les versions des utilisateurs de l'application qui s'exécutent.
Comment puis-je retourner la version et le numéro de build à l'aide de Swift?
CFBundleVersion
& CFBundleShortVersionString`. Le premier est votre version de build . L'autre est le numéro de version . Voir ici pour plus d'informationsRéponses:
ÉDITER
Mis à jour pour Swift 4.2
ÉDITER
Comme l'a souligné @azdev sur la nouvelle version de Xcode, vous obtiendrez une erreur de compilation pour essayer ma solution précédente, pour résoudre ce problème, il suffit de la modifier comme suggéré pour déballer le dictionnaire de bundle en utilisant un!
Fin de la modification
Utilisez simplement la même logique que dans Objective-C mais avec quelques petits changements
J'espère que cela vous aide.
David
la source
infoDictionary
doit être déballé en utilisant!
. Voici ce que j'utilise, placé dans un fichier Globals.swift:let appVersion = NSBundle.mainBundle().infoDictionary!["CFBundleVersion"] as String
let appVersion = NSBundle.mainBundle().infoDictionary!["CFBundleVersion"] as! String
Je sais que cela a déjà été répondu, mais personnellement, je pense que c'est un peu plus propre:
Swift 3.0:
Rapide <2,3
De cette façon, la version if let prend en charge le traitement conditionnel (définissant le texte de l'étiquette dans mon cas) et si infoDictionary ou CFBundleShortVersionString sont nuls, le déballage facultatif entraînera le saut du code.
la source
self.labelVersion.text
est de type facultatif, vous pouvez donc attribuer directementNSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String
let
, se demandant simplement pourquoi cela pourrait être nécessaire. Merci!Mis à jour pour Swift 3.0
Les
NS
préfixes ont maintenant disparu dans Swift 3.0 et plusieurs propriétés / méthodes ont changé de nom pour devenir plus Swifty. Voici à quoi cela ressemble maintenant:Ancienne réponse mise à jour
Réponse originale
la source
Je sais également que cela a déjà été répondu, mais j'ai résumé les réponses précédentes:
(*) Mis à jour pour les extensions
Usage:
@Deprecated: Anciennes réponses
Swift 3.1 :
Pour les anciennes versions :
Donc, si vous souhaitez définir le texte de l'étiquette ou utiliser ailleurs;
la source
Pour Swift 4.0
la source
J'ai fait une extension sur le bundle
puis l'utiliser
la source
Pour Swift 3.0 NSBundle ne fonctionne pas, le code suivant fonctionne parfaitement.
et pour juste le numéro de build, c'est:
Confusément 'CFBundleVersion' est le numéro de build tel qu'il est entré dans Xcode sur Général-> Identité.
la source
Xcode 9.4.1 Swift 4.1
Notez l'utilisation de localizedInfoDictionary pour choisir la bonne version linguistique du nom complet de l'ensemble.
la source
Xcode 8, Swift 3:
la source
Swift 4, extension utile pour Bundle
la source
Bundle + Extensions.swift
Usage:
la source
OP a demandé le numéro de version et le numéro de build. Malheureusement, la plupart des réponses ne proposent pas ces deux options. De plus, d'autres ajoutent des méthodes d'extension inutiles. En voici un qui est assez simple et résout le problème d'OP:
la source
Ma réponse (en août 2015), étant donné que Swift continue d'évoluer:
la source
J'ai créé une extension pour UIApplication.
la source
Après avoir examiné la documentation, je pense que ce qui suit est plus propre:
Source : "L'utilisation de cette méthode est préférée aux autres méthodes d'accès car elle renvoie la valeur localisée d'une clé lorsqu'elle est disponible."
la source
Pour Swift 1.2, c'est:
la source
Swift 3:
Numéro de version
Numéro de build
la source
Swift 4
Ancienne syntaxe rapide
la source
Attention: Vous devez utiliser si laissez ici au cas où la version ou la construction de l'application n'est pas définie, ce qui entraînera un plantage si vous essayez d'utiliser! pour déballer.
la source
Voici une version mise à jour pour Swift 3.2:
la source
Vous pouvez maintenant utiliser une constante pour cela, plutôt que d'avoir à utiliser du code de type chaîne comme auparavant, ce qui rend les choses encore plus pratiques.
la source
la source
SWIFT 4
// Obtenez d'abord le nsObject en le définissant comme AnyObject facultatif
// Ensuite, transtypez simplement l'objet en chaîne, mais attention, vous voudrez peut-être vérifier à nouveau zéro
la source
pour toute personne intéressée, il existe une bibliothèque agréable et soignée appelée
SwifterSwift
disponible sur github et également entièrement documentée pour chaque version de swift (voir swifterswift.com ).en utilisant cette bibliothèque, lire la version de l'application et le numéro de build serait aussi simple que cela:
la source
Mise à jour pour Swift 5
voici une fonction que j'utilise pour décider d'afficher ou non une page "l'application mise à jour". Il renvoie le numéro de build, que je convertis en un Int:
S'il n'a jamais été utilisé auparavant, il renverra 0 qui est inférieur au numéro de build actuel. Pour ne pas afficher un tel écran aux nouveaux utilisateurs, ajoutez simplement le numéro de build après la première connexion ou lorsque l'intégration est terminée.
la source
Pour Swift 5.0 :
la source
Fonction utilitaire simple pour renvoyer la version de l'application en tant que Int
la source
la source
Bundle + Extension.swift (SwiftUI, Swift 5, Xcode 11)
J'ai combiné les idées de quelques réponses et j'ai étendu un peu:
Fondation d'importation
Bundle d'extension {
}
Exemple d'utilisation de SwiftUI
la source
la source