You can use the standard <objc/runtime.h> functions:
class MyObject {
    dynamic var identifier = 0
    func dynamicProperties() -> [String] {
        var dynamicProperties = [String]()
        var propertyCount = UInt32(0)
        let properties = class_copyPropertyList(object_getClass(self), &propertyCount)
        for var i = 0; i < Int(propertyCount); i++ {
            let property = properties[i]
            let propertyName = property_getName(property)
            dynamicProperties.append(String(CString: propertyName, encoding: NSUTF8StringEncoding)!)
        }
        free(properties)
        return dynamicProperties
    }
}
--
If you want subclasses to show not only their properties, but also those of its superclass, you can do the following:
class BaseClass {
    dynamic var identifier = 0
    func dynamicProperties() -> [String] {
        var dynamicProperties = [String]()
        var propertyCount = UInt32(0)
        let properties = class_copyPropertyList(object_getClass(self), &propertyCount)
        for var i = 0; i < Int(propertyCount); i++ {
            let property = properties[i]
            let propertyName = property_getName(property)
            dynamicProperties.append(String(CString: propertyName, encoding: NSUTF8StringEncoding)!)
        }
        free(properties)
        return dynamicProperties
    }
}
class SubClass : BaseClass {
    dynamic var name: String!
    override func dynamicProperties() -> [String] {
        var dynamicProperties = super.dynamicProperties()
        var propertyCount = UInt32(0)
        let properties = class_copyPropertyList(object_getClass(self), &propertyCount)
        for var i = 0; i < Int(propertyCount); i++ {
            let property = properties[i]
            let propertyName = property_getName(property)
            dynamicProperties.append(String(CString: propertyName, encoding: NSUTF8StringEncoding)!)
        }
        free(properties)
        return dynamicProperties
    }
}