从类中获取类型

时间:2014-09-29 12:57:45

标签: ios xcode swift

是否可以从Type中的类中检索数据Swift language

这是一个例子:

class Test : NSObject
{
    let field1 : String
    let field2 : Int

    init(value1 : String, value2 : Int)
    {
        field1 = value1
        field2 = value2
    }
}

let test1 = Test(value1: "Hello", value2: 1)

//this code return the same string with class name (__lldb_expr_129.Test)
let classString = NSStringFromClass(test1.classForCoder) 
let className2 = reflect(test1).summary

//this code return the same ExistentialMetatype value and not the Tes or NSObject type
let classType = reflect(test1).valueType
let classType2 = test1.self.classForCoder

//this return Metatype and not the Test or NSObject type
let classType3 = test1.self.dynamicType

是否有方法可以检索Test类型,而不是ExistentialMetatypeMetatype值?

1 个答案:

答案 0 :(得分:1)

  1. .self对象是没有意义的。 test1.selftest1
  2. 相同
  3. test1.classForCodertest1.dynamicType相同,只是Test.self。这是类型(元类型类型的值)。 Swift类型目前没有很好的可打印表示形式;但仅仅因为它打印不好并不意味着它不是你想要的。由于在这种情况下类型是一个类,您可以使用NSStringFromClass或将其强制转换为一个对象(为您提供Objective-C类对象)并打印它。