2016-05-02 2 views
8

名前がフレームワークと同じタイプのフレームワーク内の型を参照しようとしています。より簡単なコードで説明しますモジュール内の型と同じ名前の型を持つ型を参照するにはどうすればいいですか?

フレームワークSomething私は両方のモジュールをインポートメインプロジェクトに続いて

public struct A { ... } 
public class Something { ... } 
枠組み OtherFramework

public struct A { ... } 

で:

import Something 
import OtherFramework 

let myA = A() // 'A' is ambiguous for type lookup in this context 

そして、私の場合do

import Something 
import OtherFramework 

let myA = Something.A() // 'A' is not a member type of 'Something' 

フレームワークを変更する以外にASomethingに参照する方法はありますか?

+0

それは素晴らしい質問です!私はこれまでのところ方法を見つけていない、私はバグだと思った。 – HAS

+0

これは回避策ですが、おそらくクラスを、フレームワークの1つにしか対応していない拡張機能に分割することができます。 – PeejWeej

+0

@ Aleph7私はちょうど先に進み、これに関する問題を作成しました:https://bugs.swift.org/browse/SR-1389あなたはそれで大丈夫だと願っています – HAS

答えて

6

1つの可能な方法は、モジュール全体をインポートすることではなく、必要な特定のタイプのみをインポートすることです。モジュールSomethingでクラスSomethingをインポートする:私が見つけ

import class Something.Something 
1

一つの解決策は、これと別の.swiftファイルを作成することです:

import Something 
typealias SomethingA = A 

そして

import Something 
import OtherFramework 

let myA = SomethingA() 
-1

あなたは試してみました

import Something 
import OtherFramework 

let myA = Something.Something.A() 
関連する問題