当前位置: 首页 > 面试题库 >

无法转换类型[[String:AnyObject]?到预期的参数类型'[NSAttributedStringKey:任何]?”

邢雨华
2023-03-14
问题内容

如何将类型的值转换'[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的新功能。所有采用字符串标识符和/或字典键的Cocoa方法现在都具有自己的键类型。这样做的原因是增加了一些类型安全性-
在旧的情况下,可能会String错误地误传递原本打算与其他API一起使用的常量,但是现在在Swift 4中,这将导致编译错误。

将方法签名更改为:

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

编辑: 为Swift 4.2更新!NSAttributedStringKey已重命名为NSAttributedString.Key



 类似资料:
  • 我不知道如何将类型的值转换为预期的参数类型,用于在以下代码中: 如何为编写

  • 我正在保存所有数据,代码写在单独的类中。它显示了一个错误,即无法将类型为“Int”的值转换为预期的参数类型“字符串”。请帮我解决这个问题。 以下是我保存所有数据的类: 这是ViewController.swift文件: 遇到错误: 无法将“Int”类型的值转换为预期的参数类型“String”

  • 我是斯威夫特的新人,现在尽我所能地学习这个。我写了得到参数的函数:数字和函数,它们与这个数字一起工作: 但是编译给出错误。当我试图改变论点时,比如

  • 我正在尝试根据我在线找到的教程创建NSURLSession任务(https://www.raywenderlich.com/85528/user-accounts-ios-ruby-rails-swift#next_section),并且我收到以下错误: 无法转换类型为(NSData!,NSURLResponse!,NSError!) - 在这段代码中: 问题所属的职能部门可在此处找到 完整的代码

  • 问题内容: 我通过以下方式添加: 现在,我在中的关键字上收到以下错误消息: 我在所有其他功能中都使用了该功能,但从未遇到此错误 问题答案: 更改为。 我不确定编译器到底在想什么(或者它的疯狂错误消息来自何处),但是我的猜测是: 在Swift中,必须先初始化变量,然后才能使用。造成这种情况的一个原因是,编译器无法验证不会尝试调用其获得的所有内容,或执行其他操作,例如访问将在之后初始化的其他变量,这取

  • 在总体方案中,我试图比较用户从tableview中的多个选择,并将它们与我的解析数据库进行比较。所以我的问题是两倍1。我当前的代码是正确的方式吗?和2。如何将值类型Bool转换为参数类型pfobject? 无法将类型“()->bool”的值转换为预期的参数类型“pfobject” 让imagesQuery=PFQuery(classname:“CollegeImages”)imagesQuery.