【问题标题】:How to create a swift object given the classname "EKAttendee"如何在给定类名“EKAttendee”的情况下创建一个快速对象
【发布时间】:2016-01-27 23:39:31
【问题描述】:

给定以下目标 c 代码

Class className = NSClassFromString(@"EKAttendee");
id attendee = [className new];

swift 代码是什么?

【问题讨论】:

    标签: objective-c macos swift2


    【解决方案1】:

    这是一个简单的例子,展示了如何使用NSClassFromString

    if let clazz = NSClassFromString("NSView") as? NSView.Type {
        let v = clazz.init(frame: NSRect(x: 0, y: 0, width: 100, height: 100))
        print(v.frame) // (0.0, 0.0, 100.0, 100.0)
    }
    

    【讨论】:

      【解决方案2】:

      试试https://objectivec2swift.com/#/converter/code

      我把这个复制进去了

      Class className = NSClassFromString(@"EKAttendee");
      id attendee = [className new];
      

      我拿回了这个

      var className: AnyClass = NSClassFromString("EKAttendee")
      var attendee: AnyObject = className()
      

      【讨论】:

      • 我收到错误:无法构造“AnyObject”,因为它没有可访问的初始化程序 var参加者:AnyObject = className()
      • 感谢转换器的链接。
      【解决方案3】:

      这行得通。

      let anyObjectType : AnyObject.Type = NSClassFromString("EKAttendee")!
      let nsObjectType : NSObject.Type = anyObjectType as! NSObject.Type
      var attendee: AnyObject = nsObjectType.init() 
      
      print("\(attendee)") 
      

      结果

      EKAttendee <0x51763530>
      email               : (null)
      isCurrentUser       : 0
      replyRequested      : 0
      role                : (null)
      status              : (null)
      type                : 0
      scheduleForceSend   : 0
      

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 2011-02-14
        • 2018-10-21
        • 1970-01-01
        • 2012-03-14
        • 2014-10-02
        • 2013-09-28
        • 2016-02-23
        • 2014-06-09
        相关资源
        最近更新 更多