【IOS开发基础系列】数据编解码专题

栏目: IOS · 发布时间: 7年前

内容简介:示例如下:此时转换成的字符串中,每个键值对之间会预留一个回车换行符,导致http传输时会出错,因此如果要用于http网络传输时,需要手动将回车符替换掉!!!iOS Base64转码(使用ios7系统自带编码库 和GMTBase64两种方式)

1 Base64

1.1 在iOS7中系统提供了base64的转码方式

示例如下:

NSData* originData = [originStr dataUsingEncoding: NSASCIIStringEncoding];
NSString* encodeResult = [originData base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
NSLog(@"encodeResult:%@",encodeResult);
NSData* decodeData = [[NSData alloc] initWithBase64EncodedString: encodeResult options:0];
NSString* decodeStr = [[NSString alloc] initWithData: decodeData encoding: NSASCIIStringEncoding];

1.2 iOS使用开源库GTMBase64转码

/**
*GTM 转码
*/
- (void)GTMEncodeTest
{
    NSString* originStr = @"Man";
    NSString* encodeResult = nil;
    NSData* originData = [originStr dataUsingEncoding: NSUTF8StringEncoding];
    NSData* encodeData = [GTMBase64 encodeData: originData];
    encodeResult = [[NSString alloc] initWithData: encodeData encoding: NSUTF8StringEncoding];
    NSLog(@"%@",encodeResult);
}
/**
* GTM 解码
*/
- (void)GMTDecodeTest
{
   NSString* encodeStr = @"TWFu";
    NSString* decodeResult = nil;
    NSData* encodeData = [encodeStr dataUsingEncoding: NSUTF8StringEncoding];
    NSData* decodeData = [GTMBase64 decodeData: encodeData];
    decodeResult = [[NSString alloc] initWithData: decodeData encoding: NSUTF8StringEncoding];
    NSLog(@"%@",decodeResult);
}

2 JSON

2.1 JSON与NSDictionary互相转换

2.1.1 NSDictionary转换为NSString

- (NSString*) DataTOjsonString: (id)object
{
    NSString*jsonString = nil;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject: object options: NSJSONWritingPrettyPrinted  error: &error];
// Pass 0 if you don't care about the readability of the generated string
    if (! jsonData) {
       NSLog(@"Got an error: %@", error);
    }else{
        jsonString= [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];
    }
    return jsonString;
}

注意:

此时转换成的字符串中,每个键值对之间会预留一个回车换行符,导致http传输时会出错,因此如果要用于http网络传输时,需要手动将回车符替换掉!!!

jsonString = [jsonString stringByReplacingOccurrencesOfString: @"\n" withString:@""];

2.1.2 将JSON串转化为NSDictionary或NSArray

// 将JSON串转化为字典或者数组
- (id)toArrayOrNSDictionary: (NSData*)jsonData{
    NSError *error = nil;
    id jsonObject = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingAllowFragments error: &error];
    if (jsonObject != nil && error == nil){
        return jsonObject;
    }else{
        // 解析错误
         return nil;
    }
}

3 参考链接

iOS Base64转码(使用ios7系统自带编码库 和GMTBase64两种方式)

http://www.2cto.com/kf/201405/297303.html

[译]iOS7:使用Base64编解码NSData和NSString对象

http://itony.me/488.html

iOS:Terminating app due to uncaught exception'NSInvalidArgumentException', reason: 'Invalid type in JSON write(_NSInlineData)'

http://stackoverflow.com/questions/24984098/iosterminating-app-due-to-uncaught-exception-nsinvalidargumentexception-reas

NSDictionary to jsonString ||对象转json格式

http://www.cnblogs.com/qingjoin/p/3437036.html

将NSString转换成UTF8编码的NSString

http://blog.csdn.net/a6472953/article/details/8163016

NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化

http://blog.csdn.net/xyxjn/article/details/17224733

--------------------- 

作者:junbaozi 

原文:https://blog.csdn.net/junbaozi/article/details/79491868 


以上所述就是小编给大家介绍的《【IOS开发基础系列】数据编解码专题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android编程权威指南(第3版)

Android编程权威指南(第3版)

比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具