2017-07-13 1 views
-1

J'ai une liste de citations. Je veux avoir une étiquette qui change tous les 24H à un nouveau devis. Comment puis-je faire cela? Comme comment puis-je gérer une journée? Je sais que je pourrais juste utiliser une API, mais je veux utiliser mes propres citations et je ne suis pas capable de créer une API par moi-même.Nouveau contenu quotidien sur l'application

Répondre

2

Supposant vous avez un tableau de citations:

let numberOfQuotes = 3 
let quotes = ["quote a", "quote b", "quote c"] 

override func viewDidLoad() { 
    _ = Timer.scheduledTimer(timeInterval: TimeInterval(60), 
               target: self, 
               selector: #selector(self.updateQuote), 
               userInfo: nil, 
               repeats: true) 

} 

func updateQuote() { 
    let lastUpdate = UserDefaults.standard.object(forKey: "lastUpdate") as? Date 
    if lastUpdate != nil { 
     let date1:Date = Date() // Same you did before with timeNow variable 
     let date2: Date = Date(timeIntervalSince1970: lastUpdate) 

     let calender:Calendar = Calendar.current 
     let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2) 

     // you can use components month, hour, second.... to update your message, in your case, we will day 

     if components.day! >= 1 { 
      UserDefaults.standard.set(Date(), forKey: "lastUpdate") 
      yourLabel.text = quotes[randomInt(0,numberOfQuotes)] 
     } 

    } else { //firstTime running 
      UserDefaults.standard.set(Date(), forKey: "lastUpdate") 
      yourLabel.text = quotes[randomInt(0,numberOfQuotes)] 
    } 
} 

func randomInt(min: Int, max:Int) -> Int { 
    return min + Int(arc4random_uniform(UInt32((max - 1) - min + 1))) 
} 

Ce code est tel qu'il est, par votre description, il fait exactement ce que vous voulez.