2017-08-15 107 views
12

如何將'[String : AnyObject]?'類型的值轉換爲預期的參數類型'[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() 
} 

回答

19

這是斯威夫特4.所有的Cocoa方法是採取字符串標識符和/或字典鍵現在有自己的類型按鍵的一項新功能。其原因是增加了一些類型安全性 - 在舊政權中,有可能意外地傳遞了一個常量,意在與其他API一起使用,但現在在Swift 4中,這會導致編譯錯誤。

你的方法的簽名更改爲:

open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [NSAttributedStringKey : Any]?)

+0

感謝您的幫助:) –

4

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]?) 
-1

這是圖表模塊。我遇到了同樣的問題。

更改方法參數可以修復該方法中的錯誤,但會將問題推送給該方法的所有調用者,而這些方法現在都有相同的問題。

是否有一個快速修復不涉及更改整個調用堆棧?

+0

答案不應該用於提問。你應該考慮發表評論或者提出一個新的問題,並從那裏引用這個問題。 –

相關問題