2016-01-21 38 views
0

因此,我不必編寫大量代碼來複制我的錯誤 - 這可能是我應該在這種情況下使用泛型,但感覺就像我的解決方案應該工作。所以,下面的代碼塊給我一個「類型DCServiceClient不符合協議DMServiceClient」:Swift - 約束關聯類型時編譯錯誤

protocol DMServiceEndpoint { } 
protocol DCServiceEndpoint: DMServiceEndpoint { } 

protocol DMServiceClient { 
    typealias Endpoint: DMServiceEndpoint 
} 

class DCServiceClient: DMServiceClient { 
    typealias Endpoint = DCServiceEndpoint 
} 

但是,如果我取消對相關類型(端點)的約束,它編譯沒有任何問題。由於DCServiceEndpoint符合約束條件(DMServiceEndpoint),因此它應該可以編譯。任何關於我在這裏失蹤的想法?多謝你們!

回答

1
protocol DMServiceEndpoint { } 
protocol DCServiceEndpoint: DMServiceEndpoint { } 

protocol DMServiceClient { 
    typealias Endpoint: DMServiceEndpoint 
} 
class DCServiceClient: DMServiceClient { 
    typealias Endpoint = newClass // implementation a class conforms to EndPoint 
} 
// add new class conforms to DMServiceEndpoint 
class newClass: DCServiceEndpoint {} 
+0

是的,不幸的是,我不知道具體的類是什麼在這一點上。我只知道它會符合協議。我們的服務客戶端類是非常通用的。在玩了一段時間之後,我開始認爲我們想要的是不可能的。 – justbaum30