1. 程式人生 > >物件和字典相互轉化

物件和字典相互轉化

注:如果是int而不是NSNumber,則kvc時自動轉化為NSNumber,所以不必擔心!!!

- (MyObject *)objectFromDic:(NSDictionary *)dic {
    MyObject *o = [[MyObject alloc] init];
    
    if (dic == nil || [dic count] == 0) {
        return nil;
    }
    
    id viewClass = objc_getClass("MyObject");
    unsigned int outCount;
    objc_property_t *properties = class_copyPropertyList(viewClass, &outCount);
    for (int i = 0; i < outCount; i++) {
        objc_property_t property = properties[i];
        NSString *name = [NSString stringWithUTF8String:property_getName(property)];
//        printf("%s , %s \n", property_getName(property), property_getAttributes(property));
        if ([dic objectForKey:name]) {
            [o setValue:[dic objectForKey:name] forKey:name];
        }
    }
    
    free(properties);
    return o;
}

- (NSDictionary *)dicFromObject:(MyObject *)object {
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    
    id viewClass = objc_getClass("MyObject");
    unsigned int outCount;
    objc_property_t *properties = class_copyPropertyList(viewClass, &outCount);
    for (int i = 0; i < outCount; i++) {
        objc_property_t property = properties[i];
        
        NSString *name = [NSString stringWithUTF8String:property_getName(property)];
        id value = [object valueForKey:name];
        
        if (value) {
            [dic setObject:value forKey:name];
        }
    }
    
    free(properties);
    return [NSDictionary dictionaryWithDictionary:dic];
}


相關推薦

物件字典相互轉化

注:如果是int而不是NSNumber,則kvc時自動轉化為NSNumber,所以不必擔心!!! - (MyObject *)objectFromDic:(NSDictionary *)dic { MyObject *o = [[MyObject alloc] in

Objective-C中ORM的運用:實體物件字典相互自動轉換

iOS開發中基於ORM的框架很多,如SQLitePersistentObject,實際開發中需求不同或場景不同,方式方法也就不同,有時專案中用不上ORM框架,或者出於公司或專案組習慣或規範、實際專案需求或技術要求等等原因,不會採用完整的ORM框架,但一些重複囉嗦的程式碼使用

POI操作wordhtml相互轉化

image com 文件 ali cto gpa jar包 nsf fun 下面是裏兩個類:第一個類是html轉為word,第二個是word轉html(最下面附上jar包下載鏈接) package com.wz.poi.wordHtml; /** * 2018/4/24 *

C#:stringint相互轉化

int.TryParse(string,)表示將數字內容的字串轉為int型別,bool類,不會產生異常,轉換成功返回 true,轉換失敗返回 false。 最後一個引數為輸出值,如果轉換失敗,輸出值為 0(下面程式碼中的a1)。 程式碼示例如下: string

StringInteger相互轉化

一、Integer轉String //方法一:Integer類的靜態方法toString() Integer a = 2; String str = Integer.toString(a) //方法二:Integer類的成員方法toStri

C++ WINDOWS下 wchar_t *char * 相互轉化總結篇

說道wchar_t和char兩個型別大家都不會陌生 wchar_t:在windows下是Unicode 16編碼,也就是俗稱寬位元組 char:當然就是指一個位元組,在windows下面預設是gbk編碼的 所以在windows 下 wchar_t 轉 char也就是編碼轉

資料型別:物件與陣列相互轉化

1、將SimpleXMLElement Object陣列轉化為普通陣列 如格式為: $data = json_decode(json_encode($response),TRUE); 結果

字串、陣列、map集合、集合陣列、Java物件與JSON相互轉化

一、需要匯入的jar包 二、相互轉化1.字串與JSON相互轉化        //字串轉化為JSON,取JSON內元素        String jsonStr="{'name':'Jeffrey'}";        JSONObject jo=JSONObject.fr

python 區分物件字典

python訪問方式: 訪問物件屬性:. 訪問陣列值:arr[index] 訪問字典值:dic[‘key’]、dic.get(‘key’) python 中,只有訪問物件的屬性可以使用 .,陣列使用下標,字典使用[‘key’]或者get(‘key’),但

php中的datetimetimestamp相互轉化

1.datetime轉化為timestamp strtotime(datetime); 2.timestamp 轉化為datetime $date=date('Y-m-d H:i:s', $stamp

python中unicode str相互轉化

python中的str物件其實就是"8-bit string" ,位元組字串,本質上類似java中的byte[]。  而python中的unicode物件應該才是等同於java中的String物件,或本質上是java的char[]。  str: s = "你好

陣列List相互轉化(轉載)

1.List轉換成為陣列。(這裡的List是實體是ArrayList)呼叫ArrayList的toArray方法。toArraypublic <T> T[] toArray(T[] a)返回一個按照正確的順序包含此列表中所有元素的陣列;返回陣列的執行時型別就是指定

extjs4.2中JSON物件JSON字串轉化

最近研究extjs中Json解析問題,其中JSON轉化問題,直接見測試程式碼:<meta charset="utf-8"> <title>Welcome to Ext JS 4.2</title> </head> <scr

JSONList相互轉化

List<Goods> goodsList = new ArrayList<>();goodsList.add(good);生成JSONArrayJSONArray array = JSONArray.fromObject(goodsList);par

xml與java物件之間的相互轉化

Java和xml的互相轉換,依靠強大的JAXBContext可以輕鬆實現。 下面通過一個簡單案例學習一下JAXBContext 首先準備好一個JavaBean供實驗: 注意 1、類檔案註解:@XmlRootElement不可缺少 2、2個Student的構造方法不能少

74_iOS乾貨40_結構體物件相互轉化 + block的寫法 + 自定義列印

一,結構體和物件的相互轉化  1,系統結構體 //結構體轉NSValue的方法 + (NSValue *)valueWithCGPoint:(CGPoint)point; + (NSValue *)valueWithCGVector:(CGVector)vector; + (N

jquery 應用—— jquery物件dom物件相互轉化

// dom物件 轉 jquery 物件 var domDemo,jqDemo; var domDemo = document.getElementById('demo'); jqDemo = $(domDemo); c

物件map之間的相互轉化

物件和map之間的相互轉化(使用反射完成) 1.物件轉化為map 2. map轉化為物件 1.物件轉化為map /** * 物件轉化為map * @param o 物件 * @retu

C風格字串C++string物件相互轉化

C風格的字串很容易轉化成C++風格的字串,反過來卻可能引起語法錯誤。 一、C風格的字串轉化為C++的string物件 C++中,string 類能夠自動將C 風格的字串轉換成string 物件   int main() { //C風格字串定義方法 char *c1 =

gson小試牛刀——複雜物件JSON字串相互轉化

好久沒有寫過Java的程式碼了,之所以寫這個題目,是因為同事的遇到的一個疑問,半小時內恢復功力,將其解決掉。 這裡所說的複雜物件是那種屬性是另外一個型別的類。 下面的例子使用gson,將java物件