import foundation
/// 如果需要用對應的型別,字典定義dictionary,對應value為int8.self、int16.self,下面用到的方法都需要更改為dictionarylet valuetypesmap: dictionary= [
"c" : "int8",
"s" : "int16",
"i" : "int32",
"q" : "int", //also: int64, nsinteger, only true on 64 bit platforms
"s" : "uint16",
"i" : "uint32",
"q" : "uint", //also uint64, only true on 64 bit platforms
"b" : "bool",
"d" : "double",
"f" : "float",
"//返回的類會帶module名,如果把module名擷取了,就無法轉換成對應的類了
let classname: nsstring = nsstringfromclass(someclass) as nsstring
}return result
}/// 獲取屬性名和型別列表
////// - returns: 屬性名和型別的字典
class func getproperties() -> dictionary?
var types: dictionary= [:]
for i in 0..string?
return name as string
}/// attributes對應的型別
////// - parameter attributes: attributes
/// - returns: 型別名
private class func valuetype(withattributes attributes: string) -> string?
return type
}/// 獲取屬性型別
////// - parameter property: 屬性物件
/// - returns: 屬性型別
private class func gettypeof(property: objc_property_t) -> string?
let attributes = attributesasnsstring as string
let slices = attributes.components(separatedby: "\"")
guard slices.count > 1 else
let objectclassname = slices[1]
return objectclassname
}}@objcmembers//必須有這一句,否則無法獲取該類的所有屬性列表
class person: nsobject
p.s:只能獲取公有屬性 獲取類的所有子類
開發過程中,有時需要獲取某個包下的所有類,或者基於指定規則獲取類清單。比較常見的解決方案是自己遍歷目錄,查詢所有.class檔案。下面這個方法使用spring工具類實現,簡化過程,不再需要自己遍歷目錄 獲取在指定包下某個class的所有非抽象子類 param parentclass 父類 param...
從基類中獲取所有子類名
有的時候,我們需要獲取某個基類中的所有子類,從而進行統一管理。這裡有乙個簡單易行的實現 class program static bool issubclassof type type,type basetype b b.basetype return false public class base...
IOS 獲取父類的所有子類 全域性替換類方法
1 獲取父類的所有子類 void getsubclass free classes 2 在新增頁面統計等時,直接在父類實現新增方法,但是要讀到子類的類名 比如在父類中新增友盟頁面統計 3 如果要實現新增統計跟蹤等,除了在基類實現,還可以通過method swizzling來實現 首先建個uiview...