IOS 自訂類型轉換為Dictionary

來源:互聯網
上載者:User

標籤:

IOS 自訂model如果要轉換位json與伺服器進行互動的時候,我把model資料類型先轉換為了dictionary然後在進行json序列化。

 

#import <objc/runtime.h>


@implementation ConvertToCustomClass
+ (NSMutableArray *)convertCustomClassToDictionary:(NSMutableArray *)array{
    NSMutableArray *customArray = [NSMutableArray array];
    for (id customClass in array) {
        NSString *className = NSStringFromClass([customClass class]);//擷取類名
        const char *cClassName = [className UTF8String];//類名編碼方式
        id theClass = objc_getClass(cClassName);//擷取當前類類型
        unsigned int outCount, i;
     
        //擷取該類的所有屬性
        objc_property_t *properties = class_copyPropertyList(theClass, &outCount);
        NSMutableArray *propertyNames = [[NSMutableArray alloc] initWithCapacity:1];
        for (i = 0; i < outCount; i++) {
            objc_property_t property = properties[i];
             //property_getName()返回屬性的名字
            NSString *propertyNameString = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
            [propertyNames addObject:propertyNameString];
            //property_getAttributes()返回屬性的屬性
            NSLog(@"%s %s\n", property_getName(property), property_getAttributes(property));
        }
        NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] initWithCapacity:1];
        for(NSString *key in propertyNames)
        {
            SEL mySel = NSSelectorFromString(key);
            id value = [customClass performSelector:mySel];
            if (value == nil)
            {
                value = [NSNull null];
            }
            [finalDict setObject:value forKey:key];
            NSLog(@"%@     %@\n", value, key);
        }
        [customArray addObject:finalDict];
    }
    return customArray;}@end 

IOS 自訂類型轉換為Dictionary

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.