De l'arrière-plan de l'objectif C lorsque j'utilise NSLog()
il préfixe le texte avec l'horodatage de la date, mais lorsque j'utilise print()
le Swift il imprime uniquement le texte
Donc, il existe un moyen de lui faire imprimer l'horodatage également, ou est-ce que je fais quelque chose de mal?
Parce que print
n'est pas NSLog
. C'est aussi simple que ça.
NSLog
est un outil de journalisation dans Foundation qui écrit dans la fonction Apple System Log) qui apparaît sur la console.
print(…)
est une fonction d'impression dans la bibliothèque standard Swift qui écrit sur la sortie standard, qui apparaît sur la console dans les sessions de débogage.
Vous pouvez ajouter Date()
à votre paramètre print
pour imprimer l'heure et la date actuelles. (Ou Date().description(with: Locale.current)
pour l'obtenir dans votre fuseau horaire local.)
Ou vous pouvez simplement utiliser NSLog
qui est disponible dans Swift aussi (si vous importez Foundation).
Swift:
NSLog("this will print with dates")
Voici une fonction suggérée que vous pouvez utiliser à la place de print ()
func printLog(log: AnyObject?) {
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS "
print(formatter.stringFromDate(NSDate()), terminator: "")
if log == nil {
print("nil")
}
else {
print(log!)
}
}
Celui-ci sort juste un horodatage simple, mais peut être facilement modifié pour inclure du texte supplémentaire si vous le souhaitez.
De plus, il s'appuie sur un lazy
DateFormatter
pour éviter des initialisations coûteuses.
import Foundation
class Timestamp {
lazy var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS "
return formatter
}()
func printTimestamp() {
print(dateFormatter.string(from: Date()))
}
}
let timestamp = Timestamp()
timestamp.printTimestamp() // 2018-07-05 12:57:08.725
timestamp.printTimestamp() // 2018-07-05 12:57:08.727 (uses the same formatter)
Créez votre propre fonction de classe pour l'impression, par exemple printWithDate () et ajoutez la date à la sortie. Ensuite, vous pouvez l'utiliser partout sans avoir à ajouter la date à chaque fois que vous souhaitez imprimer.