【问题标题】:How to get base64 from web and decode in Swift?如何从 Web 获取 base64 并在 Swift 中解码?
【发布时间】:2016-12-22 04:10:23
【问题描述】:

我是 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 版。

想知道这样做是否是一种好习惯以及最好的方法是什么?

【问题讨论】:

    标签: ios swift base64


    【解决方案1】:

    为了获得最佳效果,您只需发送图片网址作为响应。但从您目前的情况来看,您可以按照以下步骤操作。

    从 base64 字符串中获取图像。首先,您需要从 base64 获取数据,然后您可以从该数据中创建图像。

    第一步:从base64获取数据

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

    第二步:从数据中获取图片

    let image = UIImage(data: imageData)
    

    第 3 步: 将 Image 设置为您的 UIImageView。

    imageView.image = image
    

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 2023-03-28
      • 1970-01-01
      • 2017-07-06
      • 2016-05-28
      • 1970-01-01
      • 2021-02-08
      • 2016-07-25
      • 2016-07-21
      相关资源
      最近更新 更多