无法转换“[String : AnyObject]”类型的值?到预期的参数类型 '[NSAttributedStringKey : Any]?'
Cannot convert value of type '[String : AnyObject]?' to expected argument type '[NSAttributedStringKey : Any]?'
如何将类型 '[String : AnyObject]?'
的值转换为预期的参数类型 '[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()
}
这是 Swift 4 的新功能。所有采用字符串标识符 and/or 字典键的 Cocoa 方法现在都有自己的键类型。这样做的原因是为了增加一点类型安全性——在旧制度中,有可能不小心错误地传递了一个本应与其他 API 一起使用的 String
常量,但现在在Swift4中,这将导致编译错误。
将您的方法签名更改为:
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [NSAttributedString.Key : Any]?)
编辑: 更新为 Swift 4.2! NSAttributedStringKey
已重命名为 NSAttributedString.Key
。
您的 atrribute
参数在 drawText
函数中不正确。
改变
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [String : AnyObject]?)
到
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [NSAttributedStringKey : Any]?)
这是图表模块。我运行遇到了同样的问题。
更改方法参数修复了该方法中的错误,但将问题推给了该方法的所有调用者,它们现在有同样的问题。
是否有不涉及更改整个调用堆栈的快速修复方法?
如何将类型 '[String : AnyObject]?'
的值转换为预期的参数类型 '[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()
}
这是 Swift 4 的新功能。所有采用字符串标识符 and/or 字典键的 Cocoa 方法现在都有自己的键类型。这样做的原因是为了增加一点类型安全性——在旧制度中,有可能不小心错误地传递了一个本应与其他 API 一起使用的 String
常量,但现在在Swift4中,这将导致编译错误。
将您的方法签名更改为:
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [NSAttributedString.Key : Any]?)
编辑: 更新为 Swift 4.2! NSAttributedStringKey
已重命名为 NSAttributedString.Key
。
您的 atrribute
参数在 drawText
函数中不正确。
改变
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [String : AnyObject]?)
到
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [NSAttributedStringKey : Any]?)
这是图表模块。我运行遇到了同样的问题。
更改方法参数修复了该方法中的错误,但将问题推给了该方法的所有调用者,它们现在有同样的问题。
是否有不涉及更改整个调用堆栈的快速修复方法?