2017-08-15 31 views
12

Cách chuyển đổi giá trị loại '[String : AnyObject]?' thành loại đối số dự kiến ​​'[NSAttributedStringKey : Any]?'?Không thể chuyển đổi giá trị của loại '[String: AnyObject]?' để loại đối số dự kiến ​​'[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() 
} 

Trả lời

19

Đây là một tính năng mới của Swift 4. Tất cả các phương thức Cocoa nhận dạng chuỗi và/hoặc khóa từ điển giờ đây đều có các loại khóa riêng. Lý do cho việc này là thêm một chút an toàn kiểu - trong chế độ cũ, có thể vô tình vượt qua một hằng số String do nhầm lẫn được sử dụng với một số API khác, nhưng bây giờ trong Swift 4, điều này sẽ dẫn đến một lỗi biên dịch.

Thay đổi phương pháp chữ ký của bạn để:

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

+0

Cảm ơn sự giúp đỡ của bạn :) –

4

luận atrribute của bạn là không chính xác trong drawText chức năng.

Thay đổi

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

Đây là mô-đun Charts. Tôi chạy vào cùng một vấn đề.

Thay đổi đối số phương pháp sửa lỗi trong phương thức đó, nhưng đẩy vấn đề lên đến tất cả người gọi của phương thức đó, hiện có cùng vấn đề.

Có sửa chữa nhanh không liên quan đến việc thay đổi toàn bộ ngăn xếp cuộc gọi không?

+0

Câu trả lời không được cho là được sử dụng để đặt câu hỏi. Bạn nên cân nhắc đưa ra nhận xét hoặc đặt câu hỏi mới và tham khảo câu hỏi này từ đó. –

Các vấn đề liên quan