2016-05-02 4 views
8

Ich versuche, einen Typ innerhalb eines Frameworks zu referenzieren, dessen Typ mit dem Framework identisch ist. OtherFrameworkWie referenziert man einen Typ in einem Modul, das einen Typ mit dem gleichen Namen wie das Modul hat?

Im Rahmen Something

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

Im Rahmen

public struct A { ... } 

Dann auf dem Hauptprojekt I beiden Module zu importieren: leichter in Code erklären

import Something 
import OtherFramework 

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

Und wenn ich tun

import Something 
import OtherFramework 

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

Gibt es eine Möglichkeit A in Something zu referenzieren, außer das Framework zu ändern?

+0

Das sind fantastische Fragen! Ich habe noch keinen Weg gefunden, ich habe angenommen, dass es ein Fehler ist. – HAS

+0

Es ist ein Problem, aber Sie könnten Ihre Klasse wahrscheinlich in Erweiterungen aufteilen, die sich nur mit einem der Frameworks befassen. – PeejWeej

+0

@ Aleph7 Ich ging einfach weiter und schuf ein Problem dafür: https://bugs.swift.org/browse/SR-1389 Ich hoffe, du bist in Ordnung mit diesem – HAS

Antwort

6

Eine Möglichkeit besteht nicht darin, das gesamte Modul zu importieren, sondern nur die spezifischen Typen zu importieren, die Sie benötigen, z. eine Klasse Something in Modul Something zu importieren:

import class Something.Something 
1

Eine Lösung, die ich gefunden ist, eine separate .swift Datei mit diesem zu erstellen:

import Something 
typealias SomethingA = A 

Und dann

import Something 
import OtherFramework 

let myA = SomethingA() 
-1

Haben Sie versucht,

import Something 
import OtherFramework 

let myA = Something.Something.A() 
Verwandte Themen