Какао Swift: сохранить несколько файлов NSImage по выбранному URL или пути с песочницей на - PullRequest
0 голосов
/ 03 октября 2018

Мне удалось получить одно изображение для сохранения на выбранный URL-адрес, но мне нужно сохранить несколько изображений NSI с пользовательскими именами.Я бы предпочел сохранить все изображения в каталог, а затем сохранить каталог, но я не могу сохранить что-либо в каталог после его создания.Это код, который я должен сохранить одно изображение из NSSavepanel.(image1 - это NSImage (). Он был установлен на файл, перетаскиваемый в приложение. Затем его размер изменяется).

func save() {
        let dialog = NSSavePanel()

        dialog.title = "Save file"
        dialog.showsResizeIndicator = false
        dialog.canCreateDirectories = true
        dialog.showsHiddenFiles = true
        dialog.allowedFileTypes = ["png"]

        if (dialog.runModal() == NSApplication.ModalResponse.OK) {
            let result = dialog.url

            if (result != nil) {

                let picture = image1
                picture.writePNG(toURL: result!)
                print("saved at \(result!)")
            }
        } else {
            print("Cancel")
            return // User clicked cancel
        }

    }

Это код, который я должен записать в URL-адрес изображения:

public extension NSImage {
    public func writePNG(toURL url: URL) {

        guard let data = tiffRepresentation,
            let rep = NSBitmapImageRep(data: data),
            let imgData = rep.representation(using: .png, properties: [.compressionFactor : NSNumber(floatLiteral: 1.0)]) else {

                print("\(self.self) Error Function '\(#function)' Line: \(#line) No tiff rep found for image writing to \(url)")
                return
        }

        do {
            try imgData.write(to: url)
        }catch let error {
            print("\(self.self) Error Function '\(#function)' Line: \(#line) \(error.localizedDescription)")
        }
    }
}

1 Ответ

0 голосов
/ 05 октября 2018

Вам необходимо использовать NSOpenPanel, чтобы получить папку назначения от вашего пользователя.Установите параметры, чтобы пользователь мог выбирать только папки и создавать новые папки.Вам будет возвращен URL-адрес существующей или вновь созданной папки.Теперь вы можете создавать в папке столько файлов (и подпапок), сколько пожелаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...