用于Swift类的NSClassForString,目标名称中包含空格

pra*_*ash 3 xcode runtime objective-c ios swift

根据这里的文档:使用Swift使用Cocoa和Objective-C, 我们需要具有完全限定的名称来获取类NSClassFromString()

例如,如果目标名称是ABC并且类名是XYZ,我们通过调用`NSClassFromString(ABC.XYZ)来获取类

但是,当目标名称中有空格时,即当目标名称类似时,我无法获得结果dummy target.我们如何在这种情况下上课?

目标名称有空格有效,如下图所示 在此输入图像描述

Mar*_*n R 5

完全限定类名

 <product_module_name>.<class_name>

目标名称可以包含空格(或其他特殊字符),但模块名称不能,它必须是有效的标识符.这两者不必相同.

当创建新目标时,Xcode从目标名称派生模块名称.如果目标名称是有效的模块名称,则默认情况下两者都相等.否则Xcode会用下划线替换无效字符.还可以在构建设置中配置产品模块名称.

例:

  • 目标名称:"我的目标#2"
  • 产品模块名称:"My_Target__2"
  • 班级名称:"MyClass"
  • 完全限定的类名:"My_Target__2.MyClass"

    let myClass: AnyClass? = NSClassFromString("My_Target__2.MyClass")
    
    Run Code Online (Sandbox Code Playgroud)