2015-10-13 83 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

相關問題