如何在使用NSItemProviderReading

时间:2018-02-19 10:19:50

标签: ios swift drag-and-drop uikit

iOS 11附带Drag&下降。我想用它来将PDF文件导入我的应用程序。我通过实现NSItemProviderReading静态方法和object(withItemProviderData:typeIdentifier:)属性创建了符合readableTypeIdentifiersForItemProvider协议的类:

import Foundation

@available(iOS 11.0, *)
final class MyDropItem: NSObject, NSItemProviderReading {

    @objc let data: Data
    @objc let typeIdentifier: String

    required init(data: Data, typeIdentifier: String) {
        self.data = data
        self.typeIdentifier = typeIdentifier
        super.init()
    }

    static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self {
        return self.init(data: data, typeIdentifier: typeIdentifier)
    }

    static var readableTypeIdentifiersForItemProvider: [String] {
        return [kUTTypePDF as String]
    }

}

但是,NSItemProviderReading没有提供从原始URL导入对象的方法。因此,我无法检索原始文件的URL并保留一些相关部分,例如lastPathComponent(例如文档名称MyPDFDocument.pdf)。

我应该怎样做才能在获取相关NSItemProviderReading URL的同时创建符合lastPathComponent的对象?

1 个答案:

答案 0 :(得分:0)

我终于发现NSItemProvider有一个名为suggestedName的属性。应该使用suggestedName来获取已删除项目的名称。