-1
SDKからアプリケーションデリゲートのクラス名を知らないアプリケーションデリゲートにアクセスしようとしています。私のSDKは、どのクラスが基本的なプロジェクトのアプリケーションデリゲートになるのかわからないということです。そこで、私はプロトコルUIApplicationDelegateに準拠したクラスを見つけました。Swift:AnyClassは型ではありません
let numberOfClasses: UnsafeMutablePointer<UInt32> = UnsafeMutablePointer<UInt32>.alloc(0)
let classes = objc_copyClassList(numberOfClasses)
var appDelegateClass: AnyClass? = nil
for i in 0...Int(numberOfClasses.memory) {
if class_conformsToProtocol(classes[i], UIApplicationDelegate.self) {
appDelegateClass = classes[i]
}
}
しかし、結果は、 "タイプ" "AnyClassを?" があります。次のコードの結果がエラーを取得「『applicationDelegateClassは』タイプではありません」:
if let applicationDelegateClass = appDelegateClass {
if let delegate = UIApplication.sharedApplication().delegate as? applicationDelegateClass.self { }
}
私はそれを解決できる方法は?
なぜあなたは次のようなメソッドを呼び出さないのですか?let appDelegate = UIApplication.shared.delegateを! AppDelegate –
あなたは何を達成しようとしていますか? 'UIApplication.shared.delegate' *はそのクラス名に関係なく、アプリケーションデリゲートです。 - 条件付きで*変数*クラス型にキャストすることはできません。 –
私のSDKは、どのクラスが基本プロジェクトのアプリケーションデリゲートになるかわからないためです。 –