attributed string swift
No se puede convertir el valor del tipo ''[String: AnyObject]?'' al tipo de argumento esperado ''[NSAttributedStringKey: Any]?'' (3)
Esta es una nueva característica de Swift 4. Todos los métodos de Cocoa que toman identificadores de cadena y / o claves de diccionario ahora tienen sus propios tipos para las claves. La razón de esto es agregar un poco de seguridad de tipo: en el antiguo régimen, era posible pasar accidentalmente una constante de String
por error que estaba destinada a ser usada con otra API, pero ahora en Swift 4, esto resultará en Un error de compilación.
Cambie su firma de método a:
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [NSAttributedString.Key : Any]?)
EDITAR: Actualizado para Swift 4.2! NSAttributedStringKey
ha cambiado su nombre a NSAttributedString.Key
.
¿Cómo convertir valores de tipo ''[String : AnyObject]?''
al tipo de argumento esperado ''[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()
}
Este es el módulo de gráficos. Tuve el mismo problema.
Cambiar el argumento del método corrige el error en ese método, pero eleva el problema a todas las personas que llaman a ese método, que ahora tienen el mismo problema.
¿Existe una solución rápida que no implique cambiar toda la pila de llamadas?
Su argumento de atrribute
es incorrecto en la función drawText
.
Cambio
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [String : AnyObject]?)
a
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [NSAttributedStringKey : Any]?)