gpt4 book ai didi

swift - 如何处理 Swift 错误消息?

转载 作者:行者123 更新时间:2023-11-28 15:08:47 25 4
gpt4 key购买 nike

我正在尝试按照 O'Reilly 图书 Learning Swift 中的 Note 示例来学习 Swift。我在某些代码上遇到了一条错误消息,但我不知道如何更正它。代码直接摘自书本:

let ErrorDomain = "NotesErrorDomain"

func err(_ code: ErrorCode,
_ userInfo:[AnyHashable: Any]? = nil) -> NSError {
// Generate an NSError object, using ErrorDomain, and using whatever
// value we were passed
return NSError(domain: ErrorDomain,
code: code.rawValue,
userInfo: userInfo)
}

Xcode 在 return 语句上发出错误信号。错误的文本是

Cannot convert value of type '[AnyHashable : Any]?' to expected argument type '[String : Any]?'

它提供通过插入 as 来修复错误! [String, Any] 但是当我接受它并且行被更改时,它现在发出警告。查看 NSError 的定义,第三个参数实际上应该是 [String, Any]。然而,在更改代码后,我收到警告这一事实告诉我仍然是正确的,将 [AnyHashable, Any] 转换为 [String, Any]不是很直截了当。

请注意,我使用的是带有 Swift 4 的 Xcode 9。我怀疑这本书使用的是可接受此代码的先前版本。

这是怎么回事,我应该怎么做才能解决这个问题?

最佳答案

NSError.init(domain:code:userInfo:) expects userInfo to be of type [String : Any]? 简单地改变你的函数签名来反射(reflect)这个和它应该按预期工作。

 let ErrorDomain = "NotesErrorDomain"

func err(_ code: ErrorCode,
_ userInfo:[String: Any]? = nil) -> NSError {
// Generate an NSError object, using ErrorDomain, and using whatever
// value we were passed
return NSError(domain: ErrorDomain,
code: code.rawValue,
userInfo: userInfo)
}

关于swift - 如何处理 Swift 错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com