Swift-Erweiterung: gleiche Erweiterungsfunktion in zwei Modulen

Say Ich habe ein Framework namens SwiftKit, das eine UIView-Erweiterungsklassenmethode namens someClassMethod und eine Eigenschaft namens someProperty enthält:

// SwiftKit
public extension UIView {
    class func someClassMethod() {
        print("someClassMethod from Swift Kit")
    }

    var someProperty: Double {
        print("someProperty from Swift Kit")
        return 0
    }
}

Und ich habe auch ein Framework namens SwiftFoundation, das auch eine UIView-Erweiterungsklassenmethode namens someClassMethod und eine Eigenschaft namens someProperty enthält:

// SwiftFoundation
public extension UIView {
    class func someClassMethod() {
        print("someClassMethod from Swift Foundation")
    }

    var someProperty: Double {
        print("someProperty from Swift Foundation")
        return 0
    }
}

Dann habe ich ein Projekt erstellt, in dem diese Frameworks vorgestellt wurden. Wenn ich beide Frameworks in dieselbe SWIFT-Datei importiere und auf diese Erweiterungen zugreife, wird der Fehler "Mehrdeutige Verwendung von someProperty / someClassMethod ()" angezeigt, auch wenn ich den Aufruf angegeben habe in Form von SwiftKit.UIView.someClassMethod ():

import UIKit
import SwiftKit
import SwiftFoundation

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.view.someProperty              // error: Ambiguous use of 'somProperty'
        SwiftKit.UIView.someClassMethod()   // error: Ambiguous use of 'someClassMethod()'
    }
}

Wenn ich nur einen davon importiere, verschwindet der mehrdeutige Fehler, aber es passiert etwas Seltsameres:

import UIKit
import SwiftKit
//import SwiftFoundation

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.view.someProperty
        SwiftKit.UIView.someClassMethod()
    }
}

Die Konsole ausdrucken:

someProperty von der Swift Foundation

someClassMethod von Swift Foundation

Meine Frage lautet: Wie kann ich diese Erweiterungen (sowohl Klassen- als auch Instanzmethode, Eigenschaften) ohne Mehrdeutigkeit aufrufen? Wenn ich nicht kann, heißt das, dass wir den Erweiterungsnamen ein Präfix hinzufügen sollten, wie wir es normalerweise mit Objective-C tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage