2017-10-13 50 views
0

運行我的應用程序時,我收到以下錯誤:的NSData無法識別的選擇發送到

+ [NSData的dataFromBase64String:]:無法識別的選擇發送到0x1aff66598 終止應用程序類由於未捕獲的異常 「NSInvalidArgumentException 」,原因: '+ [NSData的 dataFromBase64String:]:無法識別的選擇發送到 類0x1aff66598'

呼叫者看起來像這樣:

NSString* decodedData = [self base64Decode:encodedData]; 

而且該方法的定義如下:

- (NSString *)base64Decode:(NSString *)base64String { 
    NSData *plainTextData = [NSData dataFromBase64String:base64String]; 
    NSString *plainText = [[NSString alloc] initWithData:plainTextData encoding:NSUTF8StringEncoding]; 
    return plainText; 
} 

// This is in another class 
+ (NSData *)dataFromBase64String:(NSString *)aString { 
    NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding]; 
    if(data == nil) 
     return nil; 
    size_t outputLength; 
    void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength); 
    NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength]; 
    free(outputBuffer); 
    return result; 
} 

我不知道我做錯了什麼......

+0

添加'#import「NSData + Base64.h」'? – DonMag

+0

什麼文件包含'dataFromBase64String'的實現?它被定義爲「NSData」類別嗎?該文件是否被鏈接到您的應用程序? –

+0

您是否知道'NSData'已經具有base64相關的功能?它被添加到iOS 7中。 – rmaddy

回答

0

是您的實現「dataFromBase64String:」在objective- C類在靜態框架或庫中?

如果是這種情況,類別中的方法不包含在鏈接中,因此在運行時不會找到,除非您在Xcode中的OTHER_LINKER_FLAGS上添加標誌'-ObjC -all_load'。

請參閱https://developer.apple.com/library/content/qa/qa1490/_index.html

相關問題