【问题标题】:Using NSDataBase64 by matt gallagher使用 NSDataBase64 by matt Gallagher
【发布时间】:2013-12-11 14:19:41
【问题描述】:

谁能告诉我为什么我在这个方法中会出错:

+ (NSData *)dataFromBase64String:(NSString *)aString
{
NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
size_t outputLength;
void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
free(outputBuffer);
return result;
}

错误在 void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength); 对“NewBase64Decode”的调用没有匹配的功能。 在我拥有的其他两个项目上它工作正常,但在我的项目中它显示错误。

【问题讨论】:

    标签: objective-c base64


    【解决方案1】:

    如果您查看 Gallagher 的 NSData 类别的原始代码(链接在此页面底部:http://www.cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html),您会看到该函数包含在同一个 .m 文件中,所以我不知道'不知道为什么在您的情况下找不到该功能。也许您剪切并粘贴了代码,而不仅仅是包含原始的NSData+Base64.mNSData+Base64.h 文件。您可能需要重新检索源代码。


    顺便说一句,iOS 7 和 Mac OS X v10.9 引入了原生 base-64 方法,无需第三方 base-64 例程:

    – initWithBase64EncodedData:options:
    – initWithBase64EncodedString:options:
    – base64EncodedDataWithOptions:
    – base64EncodedStringWithOptions:
    

    他们还公开了以下两种以前的私有方法,以向后兼容早期的 iO​​S 和 Mac OS X 版本:

    – initWithBase64Encoding: 
    – base64Encoding
    

    请参阅NSData reference 的“创建数据对象”和“Base-64 编码”部分。

    【讨论】:

    • 好的,我设法解决了这个问题,但另一个问题是......我应该如何使用它?我是目标 c 的新手,我很难编写这类东西。你能告诉我任何战略提示,如何开始吗?
    • @KarolisRaišelis 我不关注你。您的问题向您展示了您调用将 base64 字符串转换为 NSData 的方法。 This answer 向您展示了如何使用本机 base-64 iOS 例程进行操作。我假设如果您正在追求 base-64,那么您必须有一些提供 base-64 字符串(或期望 base-64 字符串)的 Web 服务。我建议您发布一个新问题,概述您正在使用的使用 base-64 的 Web 服务的细节。 (这肯定超出了我们在 cmets 中应该解决的范围......)
    • 所以我在编译器中发现了问题,即不允许我使用 base64 文件代码。在“将源代码编译为”的编译器选项中,它被设置为“objective c++”,但现在当我将其更改为其他内容时,我的旧代码中出现错误。我该怎么办?
    • @KarolisRaišelis 您可能希望将“编译源代码”更改为“根据文件类型”。
    • 这给了我旧代码中的其他错误,我真的不想修复它们。
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多