2016-05-17 43 views
1

SO本來我是有一些麻煩斯威夫特2封,這裏是我的問題:斯威夫特2封煩惱

func getImgurHotListWithViralBool(viral:Bool) -> NSArray 
{ 
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral, 
            success:{ 
             (objects:NSArray) in 
//It gives the error here********* 
            }, 
            failure: {(error:NSError) in 

            }) 
} 

它給人的錯誤:

Cannot convert value of type '(NSArray) ->()' to expected argument type '(([AnyObject]!) -> Void)!'

UPDATE: 值得慶幸的是, Marco Boschi幫助我解決這個問題;

func getImgurHotListWithViralBool(viral:Bool) -> NSArray { 
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral, 
     success: { (objects: [AnyObject]!) in 
      // ... 
     }, failure: { (error:NSError) in 
      // ... 
     }) 
} 

而現在的誤差在error:NSError即存在:

Cannot convert value of type '(NSError) ->()' to expected argument type '(([AnyObject]!) -> Void)!'

我應該怎麼辦?

+1

您是否試過從中刪除顯式類型? '成功:{對象在/ * ... * /}'中。並請張貼您的代碼和確切的錯誤信息,而不是兩者的截圖。 – luk2302

+1

請更新您的問題並將您的代碼作爲文本發佈。它使閱讀和參考變得更容易。 – rmaddy

+0

@rmaddy更新 –

回答

2

你使用需要接受作爲一個參數一個斯威夫特陣列,一個隱含展開之一,AnyObject S([AnyObject]!)的錯誤消息指出封閉,但你使用的是舊NSArray和功能編譯器不能將你的閉包的類型轉換爲請求的類型,因此錯誤,如下所示更改代碼將解決它。

func getImgurHotListWithViralBool(viral:Bool) -> NSArray { 
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral, 
     success: { (objects: [AnyObject]!) in 
      // ... 
     }, failure: { (error:NSError) in 
      // ... 
     }) 
} 

UPDATE:你的第二個錯誤是和以前一樣,該API要接受的AnyObject秒的隱含展開陣列封閉,但你提供一個採取NSError,你必須將簽名failure更改爲

failure: { (error: [AnyObject]!) in 
    // ... 
} 

爲了解決它。請確保檢查您的API的文檔,以瞭解如何從數組中獲取錯誤。

+0

這相對好,因爲現在它在「(錯誤:NSError)」的錯誤「..大聲笑:) –

+0

它可能是像原來的錯誤,請更新您的問題與新的一個。 –

+0

@cookiemonsta我已經更新了我的答案,希望它可以幫助你 –