SwiftKit という名前のフレームワークがあるとします。このフレームワークには、someClassMethod という名前の UIView の拡張クラス メソッドと、その中に someProperty という名前のプロパティがあります。
// SwiftKit
public extension UIView {
class func someClassMethod() {
print("someClassMethod from Swift Kit")
}
var someProperty: Double {
print("someProperty from Swift Kit")
return 0
}
}
また、SwiftFoundation という名前のフレームワークもあります。このフレームワークには、someClassMethod という名前の UIView の拡張クラス メソッドと、その中に someProperty という名前のプロパティがあります。
// SwiftFoundation
public extension UIView {
class func someClassMethod() {
print("someClassMethod from Swift Foundation")
}
var someProperty: Double {
print("someProperty from Swift Foundation")
return 0
}
}
次に、これらのフレームワークを導入したプロジェクトを作成しました。両方を同じswiftファイルにインポートしてそれらの拡張機能にアクセスすると、呼び出しを指定しても、「someProperty/someClassMethod()のあいまいな使用」エラーが発生しました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()'
}
}
それらの1つだけをインポートすると、あいまいなエラーはなくなりますが、さらに奇妙なことが起こります:
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()
}
}
コンソールの出力:
Swift Foundation の someProperty
Swift Foundation の someClassMethod
私の質問は次のとおりです:これらの拡張機能(クラス/インスタンスメソッド、プロパティの両方)をあいまいにせずに呼び出すにはどうすればよいですか? できない場合は、Objective-C で通常行うように、拡張機能名にプレフィックスを追加する必要があるということですか?