Я записываю изображение в файл и читаю обратно в методе 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)")
}
debug вывод окна:
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, я извлекаю URL и попробуйте получить доступ к изображению, но оно выдает ошибку:
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: Необязательно (файл: /// var / mobile / Containers /Data/Application/19A5A226-3CAF-4DC0-9015-40278703C5BA/Documents/Image.png) 2020-03-27 00: 07: 04.079576-0500 r2nr [9945: 4518812] Соединение NSURLC завершено с ошибкой - код -1002
2020-03-27 00: 07: 07.009134-0500 r2nr [9945: 4518751] Сбой CFURLCopyResourcePropertyForKey, так как ему был передан URL-адрес без cheme
Невозможно загрузить данные изображения: Ошибка Domain = NSCocoaErrorDomain Code = 256 «Файл« Image.png) »не может быть открыт». UserInfo = {NSURL = Необязательно (файл: ///var/mobile/Containers/Data/Application/19A5A226-3CAF-4DC0-9015-40278703C5BA/Documents/Image.png)}
путь к файлу не изменился, но не может прочитать данные изображения из файла. Что не так?