2016-09-10 133 views

回答

24

問題是你已經命名了你的錯誤類型Error - 它與標準庫Error協議衝突(因此Swift認爲你有一個循環引用)。

你可以參考斯威夫特Error協議作爲Swift.Error爲了消除歧義:

enum Error : Swift.Error { 
    case NotFound 
} 

但是,這將意味着你的模塊中Error任何未來的引用將參考Error類型,而不是Swift Error協議(你將不得不再次消除歧義)。

因此,迄今爲止最簡單的解決方案將簡單地將您的錯誤類型重命名爲更具描述性的內容。

+1

因此,在舊版本中,我不會已經能夠說出我的枚舉錯誤類型,但現在雨燕協議名稱已更改爲錯誤,我不能使用錯誤,對吧? – Shades

+2

@Shades Yup,這是正確的 - 如果您在構建設置(將使用Swift 2.3)中將「使用傳統Swift語言版本」變爲「Yes」,您可以自己嘗試。 – Hamish

2

發生此錯誤是因爲您「覆蓋」了Error這是一個的現有聲明。所以你必須爲你的「錯誤」enum選擇另一個(可能更具描述性的)名稱。

1

我也有這個問題,雖然我宣佈我的枚舉具體名稱。

原因是我使用Realm,它有Error類,這使得Swift.ErrorRealmSwift.Error之間的混淆。

解決方案是在聲明中指定RealmSwift.Error

// before 
enum MyError: Error { ... } 
// after 
enum MyError: Swift.Error { ... } 
0

我在AVCapture會嘗試這一塊,它工作在斯威夫特3 +的iOS 10.使用一個NSError作爲RawValue可能解決什麼哈米什指的是上述關於未來的引用錯誤。

enum Error : Swift.Error { 
    typealias RawValue = NSError 

    case failedToAddInput 
    case failedToAddOutput 
    case failedToSetVideoOrientation 
} 
相關問題