Ne peut pas convertir une valeur de type '[Chaîne : AnyObject]?' à attendre argument de type '[NSAttributedStringKey : Tout]?'
Comment faire pour convertir des valeurs de type '[String : AnyObject]?'
attendus type d'argument '[NSAttributedStringKey : Any]?'
?
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [String : AnyObject]?)
{
var point = point
if align == .center
{
point.x -= text.size(withAttributes: attributes).width / 2.0
}
else if align == .right
{
point.x -= text.size(withAttributes: attributes).width
}
NSUIGraphicsPushContext(context)
(text as NSString).draw(at: point, withAttributes: attributes)
NSUIGraphicsPopContext()
}
Vous devez vous connecter pour publier un commentaire.
C'est une nouvelle fonctionnalité de Swift 4. Tous le Cacao méthodes qui prennent des identificateurs de chaîne et/ou les clés de dictionnaire ont maintenant leurs propres types de la remise des clés. La raison pour cela est d'ajouter un peu de type de sécurité—dans l'ancien régime, il a été possible accidentellement passer un
String
constante par erreur qui a été conçu pour être utilisé avec une autre API, mais maintenant, en Swift 4, cela provoquera une erreur de compilation.Changer votre méthode de signature à:
EDIT: mis à Jour pour Swift 4.2!
NSAttributedStringKey
a été renomméNSAttributedString.Key
.Votre
atrribute
argument est incorrect dans ladrawText
fonction.Changement
à
C'est le module graphique. J'ai rencontré le même problème.
La modification de la méthode argument corrige l'erreur dans la méthode, mais repousse le problème à tous les appelants de cette méthode, qui maintenant ont le même problème.
Est-il une solution rapide qui n'implique pas de modification de l'ensemble de la pile d'appel?