照旧先上图:
NSDictionary * dictnew = [[NSDictionary alloc]initWithObjectsAndKeys:@"花姐",@"name",@"167",@"height", nil];
NSLog(@"dictnew:%@",dictnew);
理论上,NSDictionary,NSArray是不能直接转化为NSString格式,就算通过万能的NSlog,打印出来也是unicode格式。
如何保存汉字并能保持字典和数组的原有格式?
比较一劳永逸的方法:Method swizzing方法替换原函数
http://www.tuicool.com/articles/Y3aYNz
还有种方法就是用json格式做中转
JOSN->NSDictinary
Created with Raphaël 2.1.0JSON(NSString)NSDataObject
上面是json格式的String转化为字典其他类型的流程,其中要经过一次NSData的转化,其他类型转化为String也同样,前提是数据结构符合json格式。
废话不说,上代码:
String -> Dictionary
-(NSString*)strToJson{
NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
NSError * err = nil;
id jsonobj = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&err];
if(err!= nil)return nil;
return jsonobj;
}
Dictonary -> String
-(NSString*)objectTojson{
NSError* err= nil;
NSData* data = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:&err];
NSString * jsons = nil;//[[NSString alloc]init];
if(err==nil){
jsons = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
}
return jsons;
}
上面分别是NSString,NSObject的category中的方法,必须用NSData做中介。