2016-12-22 1 views
1

Я новичок в Swift, и я долго ищу в сети, но не использую.Как получить base64 из Интернета и декодировать в Swift?

Я хотел бы декодировать 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 string. Сначала вам нужно получить данные из base64, и из этих данных вы можете создать изображение.

Шаг1: Получить данные из base64

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

Step2: Получить изображение из данных

let image = UIImage(data: imageData) 

Step3: Установить изображение в UIImageView.

imageView.image = image 

 Смежные вопросы

  • Нет связанных вопросов^_^