在 iOS 7 和 Mac OS 10.9 SDK 中,Apple 引入了新的 base64 方法,使得不再需要使用第三方 base 64 解码库。此外,它们暴露了对私有 base64 方法的访问,这些方法可以从 iOS 4 和 Mac OS 6 追溯性可用。
尽管不再需要使用此库,但您可能仍然会发现它有用,因为它抽象了支持旧 OS 版本删除的 Base64 方法的复杂性,并提供了一些额外的实用函数,如任意包装宽度和 NSString 编码。
Base64 是一系列提供将数据编码和解码为 base-64 编码字符串的方法的类别。
注意:“支持”意味着库已针对此版本进行测试。“兼容”意味着该库应该在该 iOS 版本上工作(即它不依赖于任何不可用的 SDK 功能),但不再测试兼容性,可能需要调整或修复错误才能正确运行。
从版本 1.1 开始,Base64 需要 ARC。如果您希望在非 ARC 项目中使用 Base64,只需将 -fobjc-arc 编译器标志添加到 Base64.m 文件中。为此,请转到目标设置中的构建阶段选项卡,打开编译源文件组,双击列表中的 Base64.m,然后在弹出窗口中输入 -fobjc-arc。
如果您希望将整个项目转换为 ARC,请在 Base64.m 中注释掉 #error 行,然后运行 Xcode 中的编辑 > 重构 > 转换为 Objective-C ARC... 工具,并确保要使用 ARC 的所有文件(包括 Base64.m)都已选择。
所有 Base64 方法都应在多个线程中同时调用。
在应用程序中使用Base64类别,只需将类别文件(不需要示例文件和资源)拖入您的项目中,然后将头文件导入到希望使用Base64功能的所有类中。
Base64增加了以下方法
+ (NSData *)dataWithBase64EncodedString:(NSString *)string;
接收一个Base64编码的字符串,返回一个包含解码数据的autoreleased NSData对象。字符串中的任何非Base64字符都会被忽略,因此可以安全地传递包含换行符或其他分隔符的字符串。
- (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth;
将数据编码为Base64编码的字符串并返回它。wrapWidth参数允许您指定输出应该在新行上包裹的字符数。wrapWidth的值必须是四的倍数。不是四的倍数的值将被截断到最接近的倍数。值为零表示数据不应包裹。
- (NSString *)base64EncodedString;
将数据编码为无包裹(不带换行符)的Base64编码字符串。
Base64增加了以下方法
+ (NSString *)stringWithBase64EncodedString:(NSString *)string;
接收一个Base64编码的字符串,返回一个包含使用UTF8编码解码数据的autoreleased NSString对象。 vast majority of Base64编码的使用场景都使用Ascii或UTF8字符串,因此这应该足以满足大多数需求。如果您确实需要用UTF8之外的编码解码字符串数据,请先将字符串转换为NSData对象,然后使用NSData的dataWithBase64EncodedString:方法。
- (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth;
将字符串数据转换为UTF8数据,然后将数据编码为Base64编码的字符串并返回它。wrapWidth参数允许您指定输出应该在新行上包裹的字符数。wrapWidth的值必须是四的倍数。不是四的倍数的值将被截断到最接近的倍数。值为零表示数据不应包裹。
- (NSString *)base64EncodedString;
将字符串编码为UTF8数据,然后将它编码为无包裹(不带换行符)的Base64编码字符串。
- (NSString *)base64DecodedString;
将字符串作为Base64编码的字符串处理,并返回一个包含使用UTF8编码解码数据的autoreleased NSString对象。字符串中的任何非Base64字符都会被忽略,因此可以安全地使用包含换行符或其他分隔符的字符串。
- (NSData *)base64DecodedData;
将字符串作为Base64编码的数据处理,并返回一个包含解码数据的autoreleased NSData对象。字符串中的任何非Base64字符都会被忽略,因此可以安全地使用包含换行符或其他分隔符的字符串。