Как создать NSItemProvider для перетаскивания файла, чтобы файлы и другие приложения принимали его? - PullRequest
0 голосов
/ 09 апреля 2019

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

В dragItems(tableView: UITableView, for indexPath: IndexPath) я создаю и возвращаю NSItemProvider следующим образом:

let itemProvider = NSItemProvider()
itemProvider.registerFileRepresentation(forTypeIdentifier: "public.data", fileOptions: [], visibility: .all) { completion in
        completion(url, false, nil)
        return nil
    }
itemProvider.suggestedName = url.lastPathComponent

Я также пытался зарегистрировать представление данных:

itemProvider.registerDataRepresentation(forTypeIdentifier: "public.data", visibility: .all) { completion in
        do {
            let data = try Data(contentsOf: url)
            completion(data, nil)
        }
        catch {
            completion(nil, error)
        }
        return nil
}

Но ни одна из них не работает: файлы и сообщения не принимают перетаскивание. (Однако работает в FileBrowser).

Проверяя NSItemProvider, который я получаю, перетаскивая файл из Files в мое приложение, я не вижу, что отличается от того, который я создаю.

Есть идеи, что я делаю не так?

спасибо,
Dillo

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