【问题标题】:Contextual type 'Any' cannot be used with dictionary literal Swift上下文类型 'Any' 不能与字典文字 Swift 一起使用
【发布时间】:2018-04-27 05:42:41
【问题描述】:

我在两个文件中使用此代码,但只有一个文件显示此错误。

上下文类型 'Any' 不能与字典文字一起使用

为什么?这2个代码是一样的,为什么只有一个得到错误?这段代码有什么问题?

let userId = user!["userId"] as! String
let bookCid = NSUUID().uuidString
let param = ["message":"addAccBook",
                 "accountbook":
                    [
                        "bookcid": bookCid!,
                        "accbookname": "",
                        "accbooktype": "",
                        "category": "",
                        "user": userId
    ]] as [String:Any]

【问题讨论】:

  • 尝试重建?
  • 是的,我关闭项目并再次打开,仍然出现错误。我还将代码粘贴到操场上,它会显示错误,所以我想知道为什么 AddAccBookVC.swift 中没有错误以及代码有什么问题..
  • AddAccBookVC 中显示bookCid 的声明。它是一个可选的字符串吗?

标签: arrays swift


【解决方案1】:

该错误具有误导性。实际错误是

无法强制解开非可选类型“字符串”的值

uuidString 返回一个非可选的String,因此您不能添加感叹号

let userId = user!["userId"] as! String
let bookCid = NSUUID().uuidString

let param : [String:Any] = ["message":"addAccBook",
                            "accountbook":
                               ["bookcid": bookCid,
                                "accbookname": "",
                                "accbooktype": "",
                                "category": "",
                                "user": userId]]

而不是桥接铸造我推荐的类型来注释它。

【讨论】:

  • 这就是为我解决的问题。话虽如此,我们如何才能使 Xcode 显示的错误与导致问题的原因真正相关?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
相关资源
最近更新 更多