2017-10-14 21 views
0

J'ai le code pour le bouton de copie de résultat (de displayResultLabel)Comment copier le résultat de deux étiquettes?

Comment puis-je faire de la copie des deux étiquettes à la fois (de resultLabel, displayResultLabel)

resultLabel - Histoire

displayResultLabel - Résultat


Exemple:

resultLabel - 5 + 22

displayResultLabel - 27

5 + 22 = 27

Photo


J'ai essayé, mais je reçois ceci: en option ("5 + 22") = En option ("27")

UIPasteboard.general.string = "\(String(describing: self.resultLabelText.text)) = \(String(describing: self.displayResultLabel.text))" 

bouton pour copier

... 
let deleteActions = UIAlertAction(title: NSLocalizedString("Copy history",comment: ""), style: .default, handler: { 
     (alert: UIAlertAction!) -> Void in 
     UIPasteboard.general.string = self.resultLabelText.text 

     self.present(alert, animated: true, completion:nil) 
    }) 
... 

Répondre

0

C'est parce qu'un texte d'étiquettes est facultatif, c'est pourquoi vous obtenez:

Optional ("5 + 22") = Optional ("27") 

le faire comme ceci:

if let resultText = resultLabelText.text, let displayText = displayResultLabel.text { 
    UIPasteboard.general.string = "\(resultText) = \(displayText)" 

} 
+0

Merci beaucoup – DTF

0

Vous avez juste besoin de déballer vos valeurs car self.resultLabelText.text et self.displayResultLabel.text sont optionals ce qui signifie que la valeur renvoyée peut être nul ou une valeur.

Si vous êtes sûr que vous avez une valeur et qu'il peut être converti, déroulez-les simplement en mettant un point d'exclamation comme ceci: self.resultLabelText.text! et self.displayResultLabel.text! ou utiliser Facultatif de liaison comme Rashwan proposé. C'est le moyen le plus sûr!

doc Apple pour les bases: Basics

+0

Essayez de ne pas forcer les valeurs Déballer si possible. –

+0

C'est pourquoi j'ai mentionné la reliure optionnelle;) – Arrabidas92