2017-05-13 4 views
0

Je veux accélérer mon code un peu. Ceci est mon code:Grand Central Dispatch

var loadedText : NSAttributedString = NSAttributedString(string: "") 
let changeThemeDispatchGroup = DispatchGroup() 
DispatchQueue.global(qos: .userInteractive).async { 

    if self.selectedNote.content != nil 
    { 
     changeThemeDispatchGroup.enter() 
     loadedText = self.selectedNote.content as! NSAttributedString 
     changeThemeDispatchGroup.leave() 
    } 
    else 
    { 
     self.noteTextView.becomeFirstResponder() 
    } 


    DispatchQueue.main.async 
    { 
     self.noteTextView.attributedText = loadedText 

    } 

    changeThemeDispatchGroup.notify(queue: DispatchQueue.main) 
    { 
     self.changeLetterColor() 
    } 
} 

Je chargement loadedText la base de données et je suis mise à jour de la vue du texte. Après avoir mis à jour le texte, je change la couleur de chaque lettre. Cela fonctionne très bien. Mais maintenant, je veux charger loadedText à partir de la base de données, changer la couleur du texte, puis mettre à jour la vue du texte. Peux-tu m'aider?

Répondre

1

Oublier le groupe et changer l'ordre

var loadedText = NSAttributedString(string: "") 
DispatchQueue.global(qos: .userInteractive).async { 

    if let content = self.selectedNote.content as? NSAttributedString { 
     loadedText = content 
    } else { 
     self.noteTextView.becomeFirstResponder() 
    } 

    DispatchQueue.main.async { 
     self.changeLetterColor()    
     self.noteTextView.attributedText = loadedText 
    } 
} 
+0

merci, cela fonctionne .. J'ai juste besoin de changer ma fonction après ... Est-il ok si je pose une autre question ici? J'ai essayé d'accélérer mon pour la boucle en utilisant la répartition de centre de diplômé, mais à un certain moment il se bloque .. ne sais pas pourquoi .. – Elita

+0

S'il vous plaît poser une nouvelle question. – vadian

+0

merci, ici c'est http://stackoverflow.com/questions/43956974/grand-center-dispatch-for-loop – Elita