У меня есть этот код:
struct MyPackageData: Codable {
let versionDate: String
let photosSizes, packshotsSizes, inspirationsPhotoSizes, conceptsSlidesSizes: [String: Int]
let tipsSlidesSizes, leafletsSlidesSizes, leafletsPdfSlidesSizes: [String: Int]
}
func downloadImagesTipsSlides(toDownloads: MyPackageData, savedURL: String){
do {
let dateToParse = toDownloads.tipsSlidesSizes
for photo in dateToParse {
let fileNamePhoto = photo.key
let checkLocalCopyFileIsAvailable = checkLocalFileCopyIsAvailable(fileName: (AppGlobalManager.sharedManager.loggedUser?.selectedLanguage)! + "/" + FileFolders.GET_TIPS_SLIDES.rawValue + "/" + "\(fileNamePhoto)")
if checkLocalCopyFileIsAvailable == false {
let productImageUrl : URL = URL(string: "\(ApiConstans.fullPath)?action=\(FileFolders.GET_TIPS_SLIDES.rawValue)&name=\(fileNamePhoto)&resolution=FHD&lang=" + (AppGlobalManager.sharedManager.loggedUser?.getUserLanguageUrl())!)!
remoteResource(at: productImageUrl, fileSize: photo.value) { (isImage) in
if isImage == false {
}
if isImage == true {
self.saveDownloadImages(fileInternetUrl: productImageUrl, fileName: "\(fileNamePhoto)", savedURL: savedURL)
}
}
} else {
print("I have photo \(fileNamePhoto) - nie robię nic")
}
}
}
}
func remoteResource(at url: URL, fileSize: Int, isImage: @escaping ((Bool) -> Void)) {
let request = URLRequest(url: url)
debugPrint(request)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let data = data, let image = UIImage(data: data) {
if let _ = UIImageJPEGRepresentation(image, 1.0) {
isImage(true)
} else if let _ = UIImagePNGRepresentation(image) {
isImage(true)
} else {
isImage(false)
}
} else {
isImage(false)
}
isImage(true) // remove
}
task.resume()
}
func saveDownloadImages(fileInternetUrl: URL, fileName: String, savedURL: String){
let documentsDir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
let fullImagesPath = documentsDir.appendingPathComponent(savedURL)
let cms = ServerConnect()
print("XX \(fullImagesPath)")
cms.downloadedFileFromInternet(fileInternetUrl: fileInternetUrl, saveToPath: fullImagesPath, fileName: fileName, completion: { (data) in
switch data {
case .succes:
print("")
case .error(let error):
//self.errorLoginMessage(txt: "MainView - Error 110: Problem with download images. \(error)", title: "Blad".localized())
print("")
break
}
})
}
Когда я выдаю ошибку: Поток 7: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения
в строке:
let productImageUrl : URL = URL(string: "\(ApiConstans.fullPath)?action=\(FileFolders.GET_TIPS_SLIDES.rawValue)&name=\(fileNamePhoto)&resolution=FHD&lang=" + (AppGlobalManager.sharedManager.loggedUser?.getUserLanguageUrl())!)!
Моя консоль отладки:
![debug](https://serwer1356363.home.pl/pub/debug.png)
У меня проблема с файлом с именем: - wolność ogłoszenia.jpg - Wydajność wagowa ___ 004.jpg
и т. Д.
С именем файла с обычным именем: 1.jpg, 139485.jpg, 14383.jpg - этот код работает правильно.
Приведенный выше код предназначен для загрузки фотографий из Интернета и сохранения их в памяти устройства.,Файлы без специальных имен работают правильно.
Не могу изменить имя файла на сервере.
Кто-нибудь знает, как это исправить?