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

“无法将'String'类型的值分配给'AnyObject吗?'”,Swift 3,Xcode 8 beta 6

席弘图
2023-03-14
问题内容

一段相当简单的代码

var dict: [String: AnyObject] = [:]
dict["key"] = "value"

生成以下编译时错误

Cannot assign value of type 'String' to type 'AnyObject?'

简单的类型检查告诉我这StringAnyObject

"value" is AnyObject // returns true

我可以更改AnyObjectAny,一切都会正常

var dict: [String: Any] = [:]
dict["key"] = "value"

但我想了解为什么会出现错误?是否String不再AnyObject?还是这是一个错误?


问题答案:

在b6中,String不再神奇地桥接到NSString。字符串不是类;它不是类。这是一个结构。您需要手工进行桥接:

dict["key"] = "value" as AnyObject

is似乎仍在桥接的事实可能是一个错误,应该报告。

不言而喻的是[String: AnyObject][String: Any]应作为你的代码越少越好。

(请确保遵循以下评论中的Hamish提供的链接。)



 类似资料:
  • 问题内容: 这是我写该行时的错误: /ChatApp/ViewController.swift:27:42:无法将“ ViewController”类型的值分配给“ UITextFieldDelegate”类型的值? 这是我的Swift代码(ViewerController.swift): 问题答案: 该生产线将导致错误,因为你尝试分配作为的。 但是,你 是不是 一个。为了使您的课程成为此类委托,

  • 问题内容: 更新到xcode 8 beta 6后,出现错误 无法将’()-> Void’类型的值分配给’(()-> Void)!’ 在以下func块的第三行: 关于修复的任何建议? 问题答案: 看来您的问题与此有关: SE-0103 尝试将您的方法标头追踪到: 与往常一样,来自新Beta的诊断消息是如此混乱和不足,但是将您的媒体资源设置为非可选将为您提供更多有用的信息。

  • 这是我的水果 现在我正在导入另一个typescript文件中的fruit.ts。这是我的 当我做的时候 我得到一个错误: 类型“string”不能分配给类型“orange”“apple”“banana”“ 如何将字符串赋给自定义类型fruit的变量?

  • 我想把字典的value元素赋给一个字符串变量。 在swiftUI中,字典中的所有值元素都作为字符串返回?类型 什么时候有绳子?类型分配给字符串变量,该字符串变量在swiftUI应用程序中显示为可选(“字符串尝试显示”)。 如何去掉应用程序显示中的“可选”选项?

  • 我在做一个小项目,遇到了以下情况: 我的问题是返回NULL是否变成空字符串?是不是没有定义?或者它会分段?

  • 问题内容: 请参见下面的自包含示例。编译器在最后一行(由标记为)报告错误,在该行中,我将实例分配给它(根据我的最佳判断)符合的协议类型。如何编译?我究竟做错了什么?还是这个编译器问题? 编辑: 即使我明确地向下转换了上面的返回类型(以便上面的代码片段的最后一行读取),如安东尼奥在调用函数时仍然存在编译错误: 问题答案: 首先,您想从devforums上读到规范的线程。您特别想跳过阅读jckarte