私は単一のコードベースから多数のターゲットを管理する必要があります。それぞれのターゲットについて、私はテーマカラー、ヘッダー名などのプロパティを設定しました。これは、プロトコルとコモンクラスを使用してこれを達成することができます。しかし、それはターゲットクラス型のオブジェクトを作成する必要があります。私は作成オブジェクトを作成したくありません。私はちょうど各ターゲットクラスのために静的に設定されている値を返すプロトコルを拡張したい。swift3の異なるターゲットに共通の意思決定ファイルを設計する
class AbstractClientFactory: AbstractProtocol
{
func getServerUrl() -> String
{
return "Default URL"
}
}
一般的な実装および戻り値を拡張
ターゲットクラスに従ってとして
class InspectClient1: AbstractClientFactory {
override func getServerUrl() -> String {
return "Target1 url value"
}
}
ターゲット2デフォルト値を返す
protocol AbstractProtocol {
func getServerUrl() -> String
}
共通クラス延びるプロトコル:以下
は私のコードでありますクラスclass InspectClient2: AbstractClientFactory {
override func getServerUrl() -> String {
return "Target 2 url"
}
}
はViewControllerをで
class AbstractClient
{
class func createAbstractClient() -> AbstractProtocol
{
return InspectClient1()
}
}
コンパイル時にクライアントタイプを返すブリッジクラスを追加しました、私は、ターゲットのオブジェクトを返さずにこれを達成したいターゲットURLに
AbstractClient.createAbstractClient().getServerUrl()
を取得していますタイプ。 View Controllerでプロトコルを拡張することでオーバーライドメソッドを呼び出す方法は他にありますか? すなわち VC - >プロトコル - >最初のデフォルトの実装ののgetURLを呼び出す - >その後、InspectClient1/InspectClient2がターゲットごとにgetURLメソッドをオーバーライドする呼び出す
は、オブジェクトを返さず、可能ですか?
グローバル変数を代わりに使用し、ウェーハクラスを使用します。あなたの設定はenunでもかまいません。 – Sulthan
@ Suulthan - もし私がグローバル変数やenumを追加したら、もしそれらの変数を正しく使用しなければならないのでしょうか?私は望んでいません。別の解決策を提案してもらえますか? –
いいえ、それは私が意味するものではありません。 – Sulthan