ios - 如何将带有类名称的字符串转换为类类型本身?

标签 ios swift generics metaprogramming metaclass

为了将类名存储在日志文件中,我将类类型的描述转换为字符串:

let objectType: NSObject.Type = Object.self
let str = String(describing: objectType)

但是,我没有成功将 str 反向转换为 NSObject.Type 类型的变量以在通用方法中使用它。

我怎样才能做到这一点?

最佳答案

您可以从string取回您的类,但在获取类名时需要使用项目的模块名称。如果您不使用模块名称,那么它将返回nil,因为您之前引用的类名称未由模块名称完全限定。您应该更改类名称字符串以表示类的完全限定名称:

let myClassString = String(MyModule.MyViewController.self)
print(myClassString)
let myClass = NSClassFromString("MyModule.\(myClassString)") as! MyViewController.Type
print(myClass)

关于ios - 如何将带有类名称的字符串转换为类类型本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080553/

相关文章:

android - Flutter-如何从静态列表中进行动态下拉列表?

ios - 未调用 UITextView 委托(delegate)方法

Scala 尴尬包含行为

ios - UIVisualEffectView 创建一个灰色框而不是模糊

ios - Swift Snapchat fetchSnapUserInfo() 'UserEntity' 值不是已解析的身份

c++全局运算符不能很好地与模板类一起使用

c# - Expression<Func<in T, bool>> 或 Expression<Func<TBase,bool>> 到 Expression<Func<T,bool>> 转换器

ios - 自动布局 - 如何添加 subview 以匹配 UIView 的大小?

ios - 获取与自身具有多对多链接的链接实体?

ios - 如何从给定的数字中找到一个随机组合,这些数字加起来与 Swift 中的另一个数字相加?