Подтвердить что ты не робот

Есть ли эквивалент writeToFile для типа Swift 3 'Data'?

У меня есть код, который возвращает новый тип замены iOS 10/Swift 3 NSData (?): Data​​p >

if let jpegData = UIImageJPEGRepresentation(newImage, 0.8) { ... }

Я хочу записать это изображение на диск, однако метод NSData writeToFile: отсутствует для этого класса. Он имеет метод writeToURL:, но, похоже, он не работает с файловым путем (и добавляющим компонентом).

Может кто-нибудь уточнить, как я теперь это сделаю, как это было в случае с Swift 2:

jpegData.writeToFile(imagePath, atomically: true) 

Спасибо!

4b9b3361

Ответ 1

Используйте write(to: fileURL).

Например:

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.jpg")

do {
    try jpegData.write(to: fileURL, options: .atomic)
} catch {
    print(error)
}

Или, если вы действительно застряли с path, преобразуйте его в URL:

do {
    try data.write(to: URL(fileURLWithPath: path), options: .atomic)
} catch {
    print(error)
}

Но, как правило, предпочтительнее использовать ссылки URL на протяжении всего вашего кода в настоящее время, удалив использование строк пути.