У меня есть класс загрузчика, который загружает файл на основе заданного URL-адреса, который затем вызывает завершение передачи содержимого файла как NSData.Swift 3 - Загрузить изображение в формате JPEG и сохранить в файл - macOS
Для проекта, в котором я использую это, URL-адрес будет представлять собой изображение в формате JPEG. Загружатель работает отлично; Я могу использовать результат в NSImage и показать его в Image View Controller.
Я хочу, чтобы иметь возможность сохранить этот объект NSData в файл.
После некоторого времени изучения Интернета в Google, StackOverflow и т. Д., И многие попытки, я не могу получить файл для сохранения.
Вот площадка класса Downloader и моя попытка сохранить файл:
//: Playground - noun: a place where people can play
import Cocoa
class NetworkService
{
lazy var configuration: URLSessionConfiguration = URLSessionConfiguration.default
lazy var session: URLSession = URLSession(configuration: self.configuration)
let url: NSURL
init(url: NSURL)
{
self.url = url
}
func downloadImage(completion: @escaping ((NSData) -> Void))
{
let request = NSURLRequest(url: self.url as URL)
let dataTask = session.dataTask(with: request as URLRequest) { (data, response, error) in
if error == nil {
if let httpResponse = response as? HTTPURLResponse {
switch (httpResponse.statusCode) {
case 200:
if let data = data {
completion(data as NSData)
}
default:
print(httpResponse.statusCode)
}
}
} else {
print("Error download data: \(error?.localizedDescription)")
}
}
dataTask.resume()
}
}
let IMAGE_URL = NSURL(string: "https://www.bing.com/az/hprichbg/rb/RossFountain_EN-AU11490955168_1920x1080.jpg")
let networkService = NetworkService(url: IMAGE_URL!)
networkService.downloadImage(completion: { (data) in
data.write(to: URL(string: "file://~/Pictures/image.jpg")!, atomically: false)
})
Игровой площадку консольного шоу вообще ничего. Может ли кто-нибудь понять, почему он не работает?
ПРИМЕЧАНИЕ: Цель macOS, а не iOS. Кроме того, я скорым нуб ...
я попробовать это:
networkService.downloadImage(completion: { (imageData) in
let imageAsNSImage = NSImage(data: imageData as Data)
if let bits = imageAsNSImage?.representations.first as? NSBitmapImageRep {
let outputData = bits.representation(using: .JPEG, properties: [:])
do {
try outputData?.write(to: URL(string: "file://~/Pictures/myImage.jpg")!)
} catch {
print("ERROR!")
}
}
})
я наткнулся, что один и пытался, но у меня был тот же самый результат. Файл image.jpg не был создан .... Редактирование выше, чтобы показать попытку ... – Johnno13
Я отозвал свой закрытый голос. –