私は、指定されたURLに基づいてファイルをダウンロードし、ファイルの内容をNSDataとして渡す完了クラスをダウンロードするクラスを持っています。Swift 3 - JPEGイメージをダウンロードしてファイルに保存 - macOS
これを使用しているプロジェクトでは、URLはJPEG画像になります。ダウンローダは完全に動作します。私は結果をNSImageに使用し、それをImage View Controllerに表示できます。
NSDataオブジェクトをファイルに保存したいと考えています。
かなりの時間Google、StackOverflowなどでインターネットを調査し、多くの提案をしようとすると、ファイルを保存できません。
//: 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)
})
遊び場コンソール全く何も表示しない:ここで
はダウンローダクラスの遊び場で、ファイルを保存するために私の試みです。誰もそれが動作しない理由を見つけることができますか?
注:対象はiOSではなくmacOSです。これは、アクセス許可の問題である可能性があり
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!")
}
}
})
私はその1に遭遇しなかったとことを試してみましたが、私は同じ結果を持っていました。 image.jpgファイルは作成されていません....上記を編集して試してみてください... – Johnno13
私は私の投票結果を撤回しました。 –