2013-10-23 84 views
0

我試圖在Xcode中創建,但我不斷收到這個問題爲「NSData的」不可見@interface聲明選擇「initWithBase64Encoding:

No visible @interface for 'NSData' declares the selector 'initWithBase64Encoding:' 

No visible @interface for 'NSData' declares the selector 'base64Encoding' 

我還到處找不但是我的問題沒有明確的解決方案。這是什麼給我的問題:

- (NSString*)stringFromImage:(UIImage*)image 
    { 
     if(image) 
     { 
      UIImage* convertImage = [GameUtility imageWithImage:image scaledToSize:CGSizeMake(80, 80)]; 
      NSData *dataObj = UIImageJPEGRepresentation(convertImage, 30); 
      return [dataObj base64Encoding]; 
     } 
     return @""; 
    } 

- (UIImage*)imageFromString:(NSString*)imageString 
    { 
     NSData* imageData =[[NSData alloc] initWithBase64Encoding:imageString]; 
     return [UIImage imageWithData:imageData]; 
    } 
+0

@Zaph:用ARC編譯不會讓你調用未知的選擇器(這是一個硬錯誤,而不是一個警告)。 – dreamlax

+0

@dreamlax真的,但錯誤不是一個真正的ARC問題。 – zaph

回答

1

use this base64 file for encode and decode

- (NSString*)stringFromImage:(UIImage*)image 
    { 
     if(image) 
     { 
      UIImage* convertImage = [GameUtility imageWithImage:image scaledToSize:CGSizeMake(80, 80)]; 
      NSData *dataObj = UIImageJPEGRepresentation(convertImage, 30); 
      return [dataObj base64EncodedString]; 
     } 
     return @""; 
    } 

- (UIImage *)imageFromString:(NSString*)imageString 
    { 
     NSData* imageData =[imageString base64DecodedData]; 
     return [UIImage imageWithData:imageData]; 
    } 
+0

嗨Jignesh。謝謝。我剛剛做了,並用「#import」Base64.h「」導入它 - 我仍然收到錯誤。 – user2740929

+0

替換您的方法 –

+0

更多錯誤。 「接口類型'UIImage'不能被返回值;你在'UIImage'中忘記*了嗎?」 - 「接口類型不能靜態分配」和「沒有可見@接口的'NSData'聲明選擇'base64EncodedString'」 – user2740929

1

您可以將圖像轉換成這樣的第一個字符串。然後你可以嘗試轉換使用encodeBase64WithData

NSString * Image = [self encodeBase64WithData:[imageDict objectForKey:@"Image"]]; 

UIImageNSData &然後將這些數據轉換成字符串,然後盡你UIImage串這樣

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"Image"]]]; 

希望它可以幫助你

+0

謝謝德雷克。仍然有一個錯誤。 – user2740929

+0

現在有什麼錯誤? – Drake

+0

「使用未聲明的標識符'imageDict'」 - 「使用未聲明的標識符'registerDataDict'」和「沒有可見的@interface爲'NSData'聲明選擇器'base64Encoding'」 – user2740929

1

如果您的目標是OS X 10.9或iOS 7,則可以使用base64EncodedStringWithOptions:方法對字符串進行編碼,並使用initWithBase64EncodedString:options:方法對字符串進行解碼。

如果您的平臺早於此目標,則需要自己編寫這些方法,或者找到一個爲您實現它們的庫(作爲類別方法NSData)。不同的庫對這些方法會有不同的名稱,因此請確保您檢查該庫的文檔或檢查標題。

相關問題