Swift Mapview无法显示缩略图图像

我正在将图像写入文件并在mapview didSelect方法内部进行读取,这会导致图像数据读取错误。

 var localImageFileUrl: URL? = nil

            do {
                delegate.documentDirectoryUrl = try FileManager.default.url(for: .documentDirectory,in: .userDomainmask,appropriateFor: nil,create: false)

                if let data = aStruct.imageData  {
                    localImageFileUrl =  delegate.documentDirectoryUrl!.appendingPathComponent("Image.png")
                    UserDefaults.standard.set(localImageFileUrl,forKey: "localImageFileUrl")
                    try data.write(to: localImageFileUrl!)
                }

            }
            catch {
                print("error")
            }

在这里进行测试就可以了。

          do{
                 print("imageUrl0: \(localImageFileUrl)")
                let imageData: Data = try Data(contentsof: localImageFileUrl as! URL)
                let image = UIImage(data: imageData)
               print(image)
            }catch{
                print("Unable to load image data: \(error)")
            }

调试窗口输出:

imageUrl0: 可选(文件:///var/mobile/Containers/Data/Application/19A5A226-3CAF-4DC0-9015-40278703C5BA/Documents/Image.png)

可选(,{120,120}) 效果很好。

我通过这样的结构传递数据:

   let endPtPin = GpsData.MyEndPt(latitude:  Double(latitudeStr) as! Double,longitude: Double(longitudeStr) as! Double,url: localImageFileUrl! as NSURL)

在mapview didSelect方法内部,我提取了网址,并尝试访问该图像,但它给出了错误:

 func mapView(_ mapView: MKMapView,didSelect view: MKAnnotationView) {

     DispatchQueue.main.async {
        if let thumbnailImageButton = view.leftCalloutaccessoryView as? UIButton,let url = (view.annotation as? GpsData.MyEndPt)?.thumbnailUrl
         {
            print("imageUrl: \(url)")
            do{
                let imageData: Data = try Data(contentsof: url as URL)
                let image = UIImage(data: imageData)
                    thumbnailImageButton.setImage(image,for: UIControlState.normal)

            }catch{
                print("Unable to load image data: \(error)")
            }
        }
    }
}

调试窗口显示错误:

imageUrl: 可选(file:///var/mobile/Containers/Data/Application/19A5A226-3CAF-4DC0-9015-40278703C5BA/Documents/Image.png) 2020-03-27 00:07:04.079576-0500 r2nr [9945:4518812] NSURLConnection 错误结束-代码-1002

2020-03-27 00:07:07.009134-0500 r2nr [9945:4518751] CFURLCopyResourcePropertyForKey失败,因为它被传递了URL 没有计划

无法加载图像数据:Error Domain = NSCocoaErrorDomain Code = 256 “无法打开文件“ Image.png)”。 UserInfo = {NSURL = Optional(file:///var/mobile/Containers/Data/Application/19A5A226-3CAF-4DC0-9015-40278703C5BA/Documents/Image.png)}

文件路径未更改,但无法从文件读取图像数据。怎么了?

jio123456 回答:Swift Mapview无法显示缩略图图像

我花了几个小时才找到工作的方法。 我正在以“数据”的形式访问图像数据

if let data = aStruct.imageData  {
      localImageFileUrl =  delegate.documentDirectoryUrl!.appendingPathComponent("Image.png")
      UserDefaults.standard.set(localImageFileUrl,forKey: "localImageFileUrl")
      try data.write(to: localImageFileUrl!)
 }

我像这样将数据转换为PNG格式,并且效果很好:

  do {
        delegate.documentDirectoryUrl = try FileManager.default.url(for: .documentDirectory,in: .userDomainMask,appropriateFor: nil,create: false)
       let image = UIImage(data: aContactStruct.imageData!)

       if let data = UIImagePNGRepresentation(image!){{
             localImageFileUrl =  delegate.documentDirectoryUrl!.appendingPathComponent("Image.png")
              UserDefaults.standard.set(localImageFileUrl,forKey: "localImageFileUrl")
              try data.write(to: localImageFileUrl!)
       }

   }
   catch {
            print("error")
   }
本文链接:https://www.f2er.com/2570714.html

大家都在问