2015-06-24 69 views
0

我成功地將SDWebImage(編寫於Objective-C)與我的Swift項目合併 - 但它仍然有點有趣。具體來說,它給我的錯誤在if聲明如下Closure內:SDWebImage和Swift

let completionBlock: SDWebImageCompletionBlock! = { 
     (image:UIImage!, error: NSError!, cacheType:SDImageCacheType, imageURL:NSURL!) -> Void in 

     if (image && cacheType == SDImageCacheType.SDImageCacheTypeNone) { 
      cell.productImageView.alpha = 0.0 
      UIView.animateWithDuration(1.5, animations: { 
       cell.productImageView.alpha = 1.0 
      }) 
     } 
    } 

    cell.productImageView.sd_setImageWithURL(imageURL!, placeholderImage:UIImage(named:"Icon120pix.png"), completed: completionBlock) 

我得到的,如果語句是錯誤:Use of unresolved identifier 'SDImageCacheTypeNone'

這是沒有意義的,因爲SDImageCacheTypeNone是的一個在SDImageCacheType typedef中定義的值。順便說一下,如果我將if聲明拿出來,只留下它裏面的聲明,那麼一切正常。

所以,任何想法,我可能在這裏做錯了嗎?

+0

這工作。那麼這是一個Swift的東西? Typedef稱爲「SDImageCacheType」,其值爲「SDImageCacheTypeNone」,「SDImageCacheTypeDisk」和「SDImageCacheTypeMemory」。因此,因爲每個值都包含typedef本身的名稱,您只需使用不同的部分?意思是「無」,「磁盤」和「內存」?還是Objective-C也是這樣,我只是不知道? – sirab333

+0

明白了。謝謝! (爲什麼不發表你的評論作爲答案,所以我可以標記它是正確的,並給你信貸呢?) – sirab333

回答

3

查看Enumerations部分中的該文檔,以深入瞭解爲什麼Swift顯示不同的Objective-C枚舉。

Apple Swift Documents

在你的代碼示例來解決這個問題的方法是使用:

SDImageCacheType.None 

而不是

SDImageCacheType.SDImageCacheTypeNone