2016-11-28 3 views
2

ここで文書を1として:Using Swift With Cocoa and Objective-C 我々は、例えばのためにNSClassFromString()NSClassForStringにスペースを持つターゲット名スイフトクラスについて

からクラスを取得するために、完全修飾名を持っている必要がありますターゲット名がABCで、クラス名がXYZの場合、NSClassFromString(ABC.XYZ)を呼び出すことによってクラスを取得します

ただし、ターゲットの名前にスペースがある場合は結果を取得できません。ターゲット名がdummy targetのようなものである場合どのようにこのようなシナリオでクラスを取得するのですか?

ターゲット名にスペースを持っているため enter image description here

+0

クラス名には名前にスペースを入れることはできません。 – rmaddy

+0

私はそれらにスペースを持つターゲット名について話しています。明らかに、クラスにはスペースがありません。 – prabodhprakash

+0

ターゲット名にもスペースを入れることはできません。実際にコードしているものと本当に必要なものを明確に示すために、質問を更新する必要があります。 – rmaddy

答えて

3

完全修飾クラス名の下の図に示されているようですが、有効であるターゲット名にスペースを含めることができます

 
<product_module_name>.<class_name> 

である(または他の特殊文字)、 ですが、モジュール名は有効な識別子でなければなりません。これらの2つは同一である必要はありません。

Xcodeは、新しいターゲットが である場合、ターゲット名からモジュール名を取得します。 ターゲット名が有効なモジュール名である場合、両方とも デフォルトと同じになります。それ以外の場合、Xcodeは無効な文字をアンダースコアで置き換えます。 ビルド設定で製品モジュール名を設定することもできます。

例:

  • ターゲット名: "私のターゲット#2"
  • 製品モジュール名: "My_Target__2"
  • クラス名: "MyClassの"
  • 完全修飾クラス名: " My_Target__2.MyClass」

    let myClass: AnyClass? = NSClassFromString("My_Target__2.MyClass") 
    
+0

ありがとうございます。それは動作します。 – prabodhprakash

関連する問題