2016-05-02 12 views
8

Adı, çerçeveyle aynı olan bir türe sahip bir çerçevenin içine başvuru yapmaya çalışıyorum. Daha kolay kodunda açıklamaya:Modülle aynı ada sahip bir türe sahip bir modülde nasıl başvuru yapılır?

Something

public struct A { ... } 
public class Something { ... } 

Çerçevesinde Çerçevesinde

public struct A { ... } 

Sonra ana proje üzerinde ben hem modülleri içe OtherFramework:

import Something 
import OtherFramework 

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

Ve eğer ben

yapmak
import Something 
import OtherFramework 

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

Çerçeveyi değiştirmek dışında Something içinde A referans vermek için herhangi bir yolu var mı?

+0

Bu harika bir soru! Şimdiye kadar bir yol bulamadım, bunun bir hata olduğunu farz ettim. – HAS

+0

Bu etrafta bir çalışma, ancak muhtemelen sınıfınızı yalnızca çerçevelerden biriyle ilgilenen uzantılara bölebilirsiniz. – PeejWeej

+0

@ Aleph7 Şimdiden bir sorunla karşılaştım ve bunun için bir sorun yarattım: https://bugs.swift.org/browse/SR-1389 Umarım iyimsersiniz – HAS

cevap

6

Muhtemel bir yol, tüm modülü içe aktarmak değil, yalnızca ihtiyaç duyduğunuz belirli türleri içe aktarmak, örn. modül Something bir sınıf Something ithal etmek:

import Something 
typealias SomethingA = A 

Sonra

import Something 
import OtherFramework 

let myA = SomethingA() 
1

bir çözüm bu ayrı bir .swift dosyası oluşturmaktır

import Something 
import OtherFramework 

let myA = Something.Something.A() 
-1

sen denediniz: buldum

import class Something.Something 
İlgili konular