2017-08-22 1 views
1

Ceci est mon code. Je veux enregistrer todayString et nextString dans la valeur par défaut de l'utilisateur afin que je puisse afficher la date stockée (mise à jour tous les mardis) dans l'étiquette quand ce n'est pas mardi.Swift - Comment stocker plusieurs dates par défaut et le récupérer?

let today = NSDate() 
    let nextTue = Calendar.current.date(byAdding: .day, value: 6, to: today as Date) 
    let formatter = DateFormatter() 
    formatter.dateFormat = "yyyy-MM-dd" 
    let todayString = formatter.string(from: today as Date) 
    let nextString = formatter.string(from: nextTue!) 
    formatter.dateFormat = "dd-MMM-yyyy" 

    let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian) 
    let components = calendar!.components([.weekday], from: today as Date) 

    if components.weekday == 3 { 
     print("Hello Tuesday") 
     thisWeekDate.text! = "\(todayString) - \(nextString)" 

    } else { 
     print("It's not Tuesday") 
    } 

App design screenshot

+0

Il semble que vous calculer votre chaîne chaque fois que le code courir, pourquoi avez-vous besoin de le sauvegarder? –

+0

@ inspector_60 Parce que l'étiquette n'affiche pas la date quand ce n'est pas mardi. –

+0

S'il vous plaît aidez-moi à comprendre: seulement quand c'est mardi que vous voulez imprimer la chaîne d'aujourd'hui et la chaîne suivante, qui représente la date d'aujourd'hui et la date de la semaine prochaine, non? –

Répondre

0

NSUserDefaults enregistre les données entre les séries d'applications utilisant le stockage de l'appareil. Le moyen le plus simple dans votre cas serait de sauvegarder deux objets de date différents, ou vous pouvez créer un dictionnaire contenant à la fois les objets de date et de les sauvegarder à la place.

Magasin

UserDefaults.standard.set(todayString, forKey: "todayStringKey") 

Récupérer

let RetrivedDate = UserDefaults.standard.object(forKey: "todayStringKey") as? NSDate 

Supprimer - Si vous voulez supprimer complètement de stockage

UserDefaults.standard.removeObject(forKey: "todayStringKey") 
+0

J'imprime (RetrivedDate comme Any), Pourquoi je reçois zéro? –

+0

Si par la suite vous n'avez besoin que de la chaîne, vous pouvez l'enregistrer à la place des objets de date. –

+0

RetrivedData n'est pas de type Any, c'est du type que vous avez enregistré, c'est NSDate, vous devez créer une chaîne depuis NSDate comme vous l'avez fait dans le code que vous avez posté pour l'imprimer –