我在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"?
发布于 2015-09-18 21:17:00
您永远不会想要向下转换为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!])
}
}https://stackoverflow.com/questions/32652801
复制相似问题