Swift 之用 Swift 运行时获取对象属性列表


//
//  Animal.swift
//  demo
//
//  Created by 八月夏木 on 2017/11/30.
//  Copyright © 2017年 八月夏木. All rights reserved.
//

import UIKit

class Animal: NSObject {
    
    @objc var name: String?
    
    @objc var age: Int = 0
    
    @objc var species: String?
    
    init(dict: [String: Any]) {
        
        super.init()
        
        setValuesForKeys(dict)
    }
    
    class func propertyList() -> [String] {
        var count: UInt32 = 0
        
        let list = class_copyPropertyList(self, &count)
        
        print("属性个数:\(count)")
        
        //
        for i in 0..<Int(count) {
            let ppy = list?[i]
            let cName = property_getName(ppy!)
            let name = String(utf8String:cName)
            print(name!)
        }
        
        // guard let
        for i in 0..<Int(count) {
            guard let ppy = list?[i],
                let name = String(utf8String:property_getName(ppy)) else {
                continue
            }
            print(name)
        }

        // guard let
        for i in 0..<Int(count) {
            guard let ppy = list?[i],
                let cName = property_getName(ppy) as Optional,
                let name = String(utf8String:cName) else {
                continue
            }
            print(name)
        }
        free(list)
        
        return []
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容