2016-12-22 22 views
1

私はSwiftで新しく、ネットで長い時間を探していますが、役に立たないです。WebからBase64を取得し、Swiftでデコードするにはどうすればよいですか?

Webサーバーからbase64をデコードしたいと思いますが、base64データは正しいとは思いますが、イメージに変換できません。

これは、base64文字列

enter link description here

であり、これは私のコード

Alamofire.request("http://www.MyWebService//MyWebService/MyWebService.asmx/MyWebService").response { response in 
      print("Request: \(response.request)") 
      print("Response: \(response.response)") 
      print("Error: \(response.error)") 

      if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       print("Data: \(utf8Text)") 
       self.getdata(data: data) 
      } 
     } 
func getdata(data: Data) 
    { 
     let parser = XMLParser(data: data) 
     parser.delegate = self 
     guard parser.parse() else { 
      print("xml parse error: \(parser.parserError?.localizedDescription)") 
      return 
     } 
     // get the parsedXMLString from 
     guard let value = parsedXMLString, let jsonData = value.data(using: .utf8) else { 
      print("cannot convert to data") 
      print("string: \(parsedElementValue)") 
      return 
     } 
     print("jsondata:\(jsonData)") 
     // try now parsing the JSON body 
     do { 
      if let jsonArray = try? JSONSerialization.jsonObject(with: jsonData, options: .allowFragments) as? [[String]]{ 
       self.XmlImage = jsonArray! 
       print("data:\(self.XmlImage)") 
      } 
      else { 
       print("data didn't get") 
      } 
     } 
    } 
extension ViewController: XMLParserDelegate { 
    func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { 
     if elementName == "string" 
     { 
      parsedElementValue = "" 
     } 
    } 
    func parser(_ parser: XMLParser, foundCharacters string: String) { 
     parsedElementValue?.append(string) 
    } 

    func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 
     if elementName == "string" { 
      parsedXMLString = parsedElementValue 
      parsedElementValue = nil 
     } 
    } 
} 

XmlImageではを "データが取得できませんでした" を取得です。これはiOS向けのため、写真をダウンロードできません。

これを実行するのが良い方法であることを知りたい場合、それを実行する最善の方法は何ですか?

答えて

0

最高の精度のためには、応答として画像URLのみを送信する必要があります。しかし、あなたの現在のケースから、あなたは以下の手順に従うことができます。

base64文字列からイメージを取得します。まず、base64からデータを取得する必要があり、そのデータからイメージを作成できます。

ステップ1:

let encodedImageData = ... web base64 string ... 
let imageData = NSData(base64EncodedString: encodedImageData options: .allZeros) 

BASE64からデータを取得するステップ2:データ

let image = UIImage(data: imageData) 
から

を画像を取得するステップ3:あなたのUIImageViewにセットのイメージ。

imageView.image = image 
関連する問題