2017-06-01 2 views
1

Je passe en revue quelques tutoriels Swift sur la façon de créer des applications simples, car je commence tout juste à coder. Je veux rendre mon application iOS 9 compatible, car j'ai un iPad 3. Cependant, toutes les instructions os.log génèrent une erreur dans Xcode qui me demande d'ajouter une instruction if #avaliable avant l'une des instructions os.log. Que fait os.log, et si j'en ai besoin, y at-il un problème en utilisant une instruction if #avaliable pour la compatibilité iOS 9? Si ce n'est pas le cas, quel est le code équivalent à iOS 9 dans l'instruction else après l'instruction if #avaliable? Merci.À quoi sert os.log?

+0

Avez-vous lu [la documentation] (https://developer.apple.com/reference/os/logging)? – rmaddy

+0

@rmaddy, Oui, j'ai lu la documentation, et je vois que c'est pour la journalisation, mais qu'est-ce qu'elle enregistre? Erreurs de base, comportement de l'application, etc. Et quel est l'équivalent iOS 9? –

+0

Il enregistre ce que vous lui dites :) - Il y a toujours 'NSLog()' qui n'est pas aussi flexible mais disponible sur toutes les versions de l'OS. –

Répondre

1

De Apple's documentation:

journalisation unifiée est disponible dans iOS 10.0 et plus tard, macOS 10,12 et plus tard, tvOS 10.0 et plus tard, et watchos 3.0 et versions ultérieures, elle annule et remplace ASL (système Apple Logger) et les API Syslog. Historiquement, les messages du journal ont été écrits à des emplacements spécifiques sur le disque, tels que /etc/system.log. Le système de journalisation unifié stocke les messages dans la mémoire et dans un magasin de données, plutôt que d'écrire dans des fichiers journaux textuels.

Il n'y a pas d'équivalent iOS9. Vous pouvez utiliser un outil de journalisation tiers comme CocoaLumberjack, qui est très populaire.

Comme un exemple concret de la façon d'utiliser cette journalisation:

if #available(iOS 10.0, *) { 
    let bundleID:String = Bundle.main.bundleIdentifier ?? "unknown" 
    let oslog = OSLog(subsystem: bundleID, category: "Model") 
    os_log("%@", log: oslog, type: .info, message) 
} 
+0

Donc, est-ce fondamentalement pour le débogage des plantages de l'application et des choses comme ça? –