ios - 如何快速检查对象属于类或结构

标签 ios swift class struct

我很快就被这个问题卡住了。假设我有一个对象,如何在 swift 中检查它是来自结构还是类。

最佳答案

在 Swift 3.0 中,您可以调用 Mirror(reflecting:x).displayStyle,其中 x 是您感兴趣的值。结果将是 classstructenumdictionaryset.. . 查看文档 https://developer.apple.com/reference/swift/mirror.displaystyle

代码示例:

struct SomeStruct {
     var name: String
     init(name: String) {
          self.name = name
     } 
} 
var astruct = SomeStruct(name:"myname") 
Mirror(reflecting:astruct).displayStyle == .struct // will be true
Mirror(reflecting:astruct).displayStyle == .class; // will be false

class MyClass {
      var name:String
      init(name: String) {
          self.name=name
      }  
} 
var aclass = MyClass(name:"fsdfd")   
Mirror(reflecting:aclass).displayStyle == .struct // will be false
Mirror(reflecting:aclass).displayStyle == .class // will be true

当然,在实践中最好使用 switch-case 语句来处理。

关于ios - 如何快速检查对象属于类或结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31849291/

相关文章:

JAVA实现接口(interface)

java - 父构造函数调用的方法表现为子方法

class - 每次应用类时的 CSS3 动画(Firefox 错误?)

swift - UISwipeGestureRecgoniser 中不止 Swift 中的上、下、左、右

ios - 尝试以编程方式创建尺寸小于屏幕的 iOS WKWebView

ios - 向 Core Data Swift 3 中插入​​两行数据

ios - 如何绑定(bind) SwiftUI 和 UIViewController 行为

ios - 更改 UITextView 字体大小

iphone - 用户在 iPhone 应用程序中输入 google+ 帐户凭据后如何保持用户登录状态?

ios - Cocoapod OpenSSL 安装问题