2016-09-24 5 views
0

ログファイルからクラス名を含む文字列を取得します。私は、次の一般的なクラスで、このクラスを使用したいクラスクラスを汎用クラスで使用する方法

class Child: Object, MyProtocol { 
// ... 
} 

:として定義することができる「子」私はすでに文字列からクラス型を取得する方法について質問hereを尋ね

open class MyClass<T: Object> where T:MyProtocol { 
    //… 

    open class func doSomething() { 
    //… 
    } 

} 

、によって得ることができる:それはタイプであるため明らかに、 objectTypeMyClassに直接使用することができない

let objectType = NSClassFromString("MyModule.\(strFromLog)”) as! Object.Type 

10としませT、そして以下は動作しません。しかし

MyClass<objectType>.doSomething() // -> error: Use of undeclared type 'objectType' 

は、まだジェネリッククラス自体を変更することなくMyClassobjectTypeを使用する方法がある(すなわち、他の方法はそれに頼っていますか?)

答えて

0

残念ながら、汎用クラスのタイプとしてNSClassFromStringの結果を使用することはできません。しかし、これを回避するには、次のようなコードを書いてください:

関連する問題