gpt4 book ai didi

ios - Swift 2 类型转换字典

转载 作者:行者123 更新时间:2023-11-28 06:58:37 25 4
gpt4 key购买 nike

我在 Swift 1.2 中有这段代码:

self.publicDatabase!.performQuery(query, inZoneWithID: nil) {
results, error in
if error != nil {
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveFailed, userinfo: ["result":results, "error":error])
}
else
{
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveSuccess, userinfo: ["result":results])
}
}

但在 Swift 2.0 中,这会产生几个编译器错误:

“没有更多上下文,表达式类型不明确”

“无法将类型 '[String : [CKRecord]?]' 的值转换为预期的参数类型 '[NSObject : AnyObject]?'”

我知道如何修复它以使错误消失,但它看起来非常丑陋和骇人听闻:

self.publicDatabase!.performQuery(query, inZoneWithID: nil) {
results, error in
if error != nil {
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveFailed, userinfo: ["result":results as! AnyObject, "error":error as! AnyObject])
}
else
{
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveSuccess, userinfo: ["result":results as! AnyObject])
}
}

有没有比必须遍历字典中的每个项目并将其强制向下转换为“AnyObject”更好的方法?

最佳答案

您永远不想向下转换为 AnyObject。我的猜测是你的修复工作是因为你解包了一个可选的,而不是因为你正在转换为 AnyObject。我猜是因为我不知道结果和错误实际上是什么类型,但这可能会起作用:

self.publicDatabase!.performQuery(query, inZoneWithID: nil) {
results, error in
if error != nil {
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveFailed, userinfo: ["result":results!, "error":error!])
}
else
{
NotificationUtility.postNotification(Notify.CloudKitVenuesRetrieveSuccess, userinfo: ["result":results!])
}
}

关于ios - Swift 2 类型转换字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652801/

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