2014-07-02 43 views
0

我開始學習Objective-C,和我試圖編譯這段代碼在Debian喘息與海灣合作委員會(GNUstep的):這個base64解碼目標-c代碼有什麼問題?

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) 
{ 
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

     NSString *base64String = @"SGVsbG8gV29ybGQh"; 

     NSURL *URL = [NSURL URLWithString: [NSString stringWithFormat:@"data:;base64,%@", base64String]]; 

     NSData *decodedData = [NSData dataWithContentsOfURL:URL]; 

     NSLog(@"%@", decodedData); 

     [pool drain]; 

     return 0; 
} 

它編譯罰款,但它返回「空」每次當時間我運行應用程序,我嘗試了不同的解決方案(將NSData轉換爲NSString),但是這並沒有吐出解碼的字符串。

這是我的代碼或GNUStep環境的問題嗎?

+0

你的代碼試圖從URL加載數據「的數據:; BASE64,SGVsbG8gV29ybGQh」。你爲什麼期望這*解碼Base64字符串? –

+0

我剛剛從SO問題中拿到了這段代碼:P –

+0

你能提供一個鏈接到這個問題嗎?我在該代碼中看不到任何Base64解碼。 - 在OS X上,NSData具有用於Base-64解碼的內置方法,但我不知道這些方法是否可用於GNUstep。也有許多第三方庫可用。 –

回答

0

基本上,您傳遞的url應該指定讀取數據的有效位置。所以,如果你只是想字符串轉換成數據,然後按照下面: -

NSData* decodedData = [ base64String dataUsingEncoding:NSUTF8StringEncoding]; 
+0

這不是問題,問題是非工作base64解碼。 –