1.一種模型生成方法,其特征在于,該方法包括:
步驟S101,輸入需要解析的字符串,并輸入需要生成的模型的類名XXModel,選擇需要使用的編程語(yǔ)言,選擇需要輸出的模型類型,確定要使用的第三方庫(kù),其中所述第三方庫(kù)為Mantle、JSONModel或YYModel中的任意一種,所述編程語(yǔ)言包括Objective-C、Swift兩種語(yǔ)言中的任意一種,如果采用Objective-C語(yǔ)言,則輸出的模型類型為.h 和 .m,.h為頭文件,.m為源文件,如果采用Swift語(yǔ)言,則輸出的模型類型為.swfit;
步驟S102,檢查輸入的需要解析的字符串的內(nèi)容是否符合所選擇的需要輸出的模型類型的標(biāo)準(zhǔn)格式;若符合,則字符串有效,進(jìn)入步驟S103;若不符合,則字符串無(wú)效,輸出用于指示模型生成錯(cuò)誤的信息,并結(jié)束本次模型生成;
步驟S103,使用步驟S101所述確定要使用的第三方庫(kù)對(duì)輸入的字符串進(jìn)行解析和判斷,從模板存儲(chǔ)路徑讀取所選擇的需要輸出的模型類型對(duì)應(yīng)的模板文件,創(chuàng)建模板文件的副本,并進(jìn)行命名;
步驟S104,在內(nèi)存中創(chuàng)建鍵值對(duì)集合,該集合用來(lái)存儲(chǔ)解析結(jié)果中的不符合iOS命名規(guī)范的屬性字段,替換所述模板文件中的類名片段和屬性聲明片段,將不符合規(guī)范的屬性添加到所述集合中,處理不符合iOS命名規(guī)范的屬性,進(jìn)行屬性名映射,輸出XXModel.h和XXModel.m文件,所述的XXModel.h是頭文件,所述的XXModel.m是源文件;
步驟S105,將XXModel.h和XXModel.m文件添加到iOS項(xiàng)目中。
2.根據(jù)權(quán)利要求1所述的模型生成方法,其特征在于,所述步驟 S103對(duì)輸入的字符串進(jìn)行解析和判斷包括:
對(duì)輸入的字符串進(jìn)行解析,若解析失敗,則提示失敗并輸出解析錯(cuò)誤信息,并結(jié)束本次模型生成;
若解析成功,則對(duì)解析結(jié)果進(jìn)行判斷,若解析結(jié)果為數(shù)組類型NSArry類型,則提示類型錯(cuò)誤并輸出類型錯(cuò)誤信息,并結(jié)束本次模型生成;若解析結(jié)果為字典類型NSDictionary類型,則將解析結(jié)果輸出。
3.根據(jù)權(quán)利要求1所述的模型生成方法,其特征在于,所述的步驟S103的模板文件具體包括:
模板文件為 .h 文件和 .m 文件;
在 .h 文件中將模型的類名以第一占位符標(biāo)識(shí),屬性名稱以第二占位符標(biāo)識(shí);
在 .m文件中將模型的類名以第三占位符標(biāo)識(shí),屬性名稱以第四占位符標(biāo)識(shí)。
4.根據(jù)權(quán)利要求3所述的模型生成方法,其特征在于,所述步驟S104的輸出XXModel.h,包括:
查找到XXModel.h中的以第一占位符標(biāo)識(shí)的第一類名片段,并將其替換為模型的類名XXModel;
查找到XXModel.h中的以第二占位符標(biāo)識(shí)的第一屬性聲明片段,將步驟S104中所創(chuàng)建的集合中存儲(chǔ)的解析結(jié)果拼接成屬性聲明語(yǔ)句,并替換掉第二占位符;
如果模型的屬性命名不符合iOS命名規(guī)范,則進(jìn)行校正,將校正前后的結(jié)果以鍵值對(duì)的方式寫入所述集合中,輸出XXModel.h文件。
5.根據(jù)權(quán)利要求3所述的模型生成方法,其特征在于,所述步驟S104的輸出XXModel.m包括:
查找到XXModel.m中的以第三占位符標(biāo)識(shí)的第二類名片段,并將其替換為模型的類名XXModel;
查找到XXModel.m中的以第四占位符標(biāo)識(shí)的第二屬性聲明片段,判斷所述集合的內(nèi)容是否為空;
如果為空,則說(shuō)明模型的所有屬性命名符合iOS命名規(guī)范,刪除第四占位符,輸出XXModel.m文件,進(jìn)入步驟S105;如果所述集合內(nèi)容不為空,則說(shuō)明模型的屬性命名不符合iOS命名規(guī)范,在進(jìn)行屬性名映射后,輸出XXModel.m文件。
6.一種模型生成系統(tǒng),該生成系統(tǒng)包括輸入和選擇模塊、檢查模塊、第一處理模塊、第二處理模塊以及添加模塊,其特征在于:
輸入和選擇模塊,用于輸入需要解析的字符串,并輸入需要生成的模型的類名XXModel,選擇需要使用的編程語(yǔ)言,選擇需要輸出的模型類型,確定要使用的第三方庫(kù),其中所述第三方庫(kù)為Mantle、JSONModel或YYModel中的任意一種;
檢查模塊,用于檢查輸入的需要解析的字符串的內(nèi)容是否符合所選擇的需要輸出的模型類型的標(biāo)準(zhǔn)格式;若符合,則字符串有效;否則無(wú)效,并輸出錯(cuò)誤信息;
第一處理模塊,使用所述確定要使用的第三方庫(kù)對(duì)輸入的字符串進(jìn)行解析和判斷,從模板存儲(chǔ)路徑讀取所選擇的需要輸出的模型類型對(duì)應(yīng)的模板文件,創(chuàng)建模板文件的副本,并進(jìn)行命名;
第二處理模塊,在內(nèi)存中創(chuàng)建鍵值對(duì)集合,用來(lái)放置解析結(jié)果中的不符合iOS命名規(guī)范的屬性字段,替換所述模板文件中的類名片段和屬性聲明片段,將不符合iOS命名規(guī)范的屬性添加到所述集合中,處理不符合iOS命名規(guī)范的屬性,輸出XXModel.h和XXModel.m文件;
添加模塊,用于將XXModel.h和XXModel.m文件添加到iOS項(xiàng)目中。
7.根據(jù)權(quán)利要求6所述的模型生成系統(tǒng),其特征在于,第一處理模塊進(jìn)一步包括解析單元和判斷單元:
解析單元,用于對(duì)輸入的字符串進(jìn)行解析,若解析失敗,則提示失敗并輸出錯(cuò)誤信息;
判斷單元,對(duì)解析結(jié)果進(jìn)行判斷,若解析結(jié)果為數(shù)組類型NSArry類型,則提示類型錯(cuò)誤并輸出錯(cuò)誤信息;若解析結(jié)果為字典類型NSDictionary類型,則將解析結(jié)果輸出。
8.根據(jù)權(quán)利要求6所述的模型生成系統(tǒng),其特征在于,所述的模板文件具體包括:
模板文件為 .h 文件和 .m 文件,在 .h 文件中將模型的類名以第一占位符標(biāo)識(shí),屬性名稱以第二占位符標(biāo)識(shí),在 .m文件中同樣將模型的類名以第三占位符標(biāo)識(shí),屬性名稱以第四占位符標(biāo)識(shí)。
9.根據(jù)權(quán)利要求8所述的模型生成系統(tǒng),其特征在于,所述第二處理模塊包括第一輸出單元,具體包括:
第一輸出單元,用于輸出模板文件XXModel.h,定位到XXModel.h中的以第一占位符標(biāo)識(shí)的第一類名片段,并將其替換為XXModel,定位到以第二占位符標(biāo)識(shí)的第一屬性聲明片段,將所創(chuàng)建的集合中存儲(chǔ)的解析結(jié)果拼接成屬性聲明語(yǔ)句,并替換掉第二占位符,如果模型的屬性命名不符合iOS命名規(guī)范,則進(jìn)行校正,將校正前后的結(jié)果以鍵值對(duì)的方式寫入所述集合中,輸出XXModel.h文件。
10.根據(jù)權(quán)利要求8所述的模型生成系統(tǒng),其特征在于,所述第二處理模塊包括第二輸出單元,具體包括:
第二輸出單元,用于輸出模板文件XXModel. m,定位到XXModel.m中的以第三占位符標(biāo)識(shí)的第二類名片段,并將其替換為XXModel,定位到以第四占位符標(biāo)識(shí)的第二屬性聲明片段,判斷所述集合的內(nèi)容是否為空,如果為空,則說(shuō)明模型的所有屬性命名符合iOS命名規(guī)范,刪除第四占位符,輸出XXModel.m文件;如果所述集合內(nèi)容不為空,則說(shuō)明模型的屬性命名不符合iOS命名規(guī)范,在進(jìn)行屬性名映射后,輸出XXModel.m文件。