数据的类型由字符串变为字典,如何操作数据

开始的时候服务器返回的data为空,是个字符串格式,但是修改之后data是字典对象。这样就导致了我在使用的时候出现问题。解决方法就是在你使用的时候加以判断。

开始未操作时的数据:
responseObject:{
accountid = “”;
data = “”;
errorCode = 2013;
msg = “Autch er gaat iets mis, je punten kunnen niet worden opgehaald. Probeer het later nog eens.”;
“msg_help” = “”;
“msg_other” = “”;
“msg_statistics” =     (
);
sourceCode = “”;
token = “”;
}
data为空是NSCFConstantString类型,这样我们将它转成字典时,取值就会出现错误[__NSCFConstantString objectForKeyedSubscript:]: unrecognized selector sent to instance
没有这个按照key值取值的方法。

修改过之后返回的数据:
responseObject:{
accountid = 399D60546B7C41A4E050A8C001681122;
data =     {
Achternaam = 45;
Noodnummber = ” 31123456789″;
Tussenvoegsel = 243;
Voornaam = 34;
“ice_id” = 399F1EECA3594618E050A8C00168133D;
};
errorCode = 0000;
msg = success;
“msg_help” = “”;
“msg_other” = “”;
“msg_statistics” =     (
);
sourceCode = “”;
token = “”;
}

修改过之后,dataNSCFDictionary类型,我们就可以像这样dic[@”Achternaam”]取值了。

处理方法:我们可以判断它是属于哪一个类,处理方式如下:
NSDictionary *dic;
if (![[[info objectForKey:@”responseMessage”] objectForKey:@”data”] isKindOfClass:[NSDictionary class]]) {
secrecyDataModel.ICEfirstname = @””;
secrecyDataModel.ICEmiddlename = @””;
secrecyDataModel.ICElastname = @””;
secrecyDataModel.ICEmobile = @””;
secrecyDataModel.ICEid = @””;

}else{
dic = [[info objectForKey:@”responseMessage”] objectForKey:@”data”];
secrecyDataModel.ICEfirstname = dic[@”Voornaam”];
secrecyDataModel.ICEmiddlename = dic[@”Tussenvoegsel”];
secrecyDataModel.ICElastname = dic[@”Achternaam”];
secrecyDataModel.ICEmobile = dic[@”Noodnummber”];
secrecyDataModel.ICEid = dic[@”ice_id”];

            }

发表评论

电子邮件地址不会被公开。 必填项已用*标注