2015-09-18 42 views
1

我有这样的代码在夫特1.2:夫特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]) 
      } 
     } 

但在夫特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”?

回答

1

你永远不会想要抛弃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!]) 
     } 
    }