2015-10-13 57 views
2

我使用NSData的传递一定的base64字符串时返回nil

[[NSData alloc] initWithBase64EncodedString:content options:0]; 

来加载通过网络传递的二进制数据,作为JSON对象的密钥。有时它可以工作,但在其他情况下却失败,例如this string

这是由NSData本身在另一端创建一个字符串:

[data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 

是否有任何选项我必须通过,并且为什么它返回零?字符串有4个长度的倍数,没有奇怪的字符,所以我不明白它为什么会失败?

+0

提供无效的Base64字符串的十六进制转储。也尝试一些在线验证器。 – zaph

+0

@zaph字符串本身被链接,我找不到任何在线验证器,只有解码器,它们没有真正告诉你他们解码的二进制字符串是否被正确解码。无论如何,我找到了答案,见下文。 – aledalgrande

+0

那么,如果它将解码我会猜测它是有效的。 ;-) – zaph

回答

3

我再次阅读文档,特别是这部分:

这种方法会拒绝非字母字符 ,包括换行符的默认实现。要支持不同的 编码并忽略非字母字符,请指定NSDataBase64DecodingIgnoreUnknownCharacters的选项值 。

,它拒绝的字符,这意味着它会拒绝整个字符串,因为这些字符的明显,因为当我加入NSDataBase64DecodingIgnoreUnknownCharacters到初始化选项,它甚至与所提到的字符串工作。

+0

惊人的文档如何可以帮助。 ;-) – zaph

+3

;-)我不是以英语为母语的人,但有时文档中某些句子的含义会达到驾照问题的复杂程度。 – aledalgrande

相关问题