【问题标题】:Can we create instance of a data type from String (Data type's name) in Swift?我们可以在 Swift 中从 String(数据类型的名称)创建数据类型的实例吗?
【发布时间】:2020-06-17 12:45:01
【问题描述】:

我知道要从类名中找到类类型,我们可以执行如下所示的操作,也可以使用 NSClassFromString。我们可以为结构、枚举或任何其他数据类型做类似的事情吗?

guard let classType = Bundle.main.classNamed("AppName.ClassName") as? ClassName.Type else {
    print("Class Type not found")
    return
}

我的问题和这个类似 Swift language NSClassFromString 。唯一的区别是我想知道我们是否可以为其他数据类型以及结构和枚举这样做。

【问题讨论】:

  • 这能回答你的问题吗? Print Struct name in swift
  • @koen 我不希望 Struct 中的 Struct 名称。它实际上是相反的。我有一个结构名称,但我没有结构本身来初始化它或访问它的静态属性。

标签: swift


【解决方案1】:

我们可以为其他数据类型以及结构和枚举这样做吗

不,你不能。 NSClassFromString 是一个 NSObject 特性;它属于 Cocoa 和 Objective-C 世界。在 Swift 中没有办法从字符串转为对类型的引用。不是那种语言。

【讨论】:

  • 我的问题不是我们是否可以在 Swift 中使用 NSClassFromString。实际上我们也可以在swift中使用它。我的问题是有什么类似的东西可以引用其他数据类型吗?任何方式感谢您的回复。
  • 不,您实际上不能“在 Swift 中”使用它。在您 import Foundationimport UIKit 的操场上尝试一下。你会发现它甚至无法编译。它根本不是 Swift 的特性。你现在明白了么?而我的答案仍然是:“不”。
  • 好吧,我问的不是纯 swift。可能是沟通上的差距。如果我可以通过在 Swift 中使用 Objective C 的特性和能力来达到结果,那对我来说完全没问题。
  • 好吧,你不能。我的答案是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多