- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
iOS 11.x swift 4
尝试实现自定义类以使用新的拖放协议(protocol)并需要一些 super 编码员的帮助。我创建了这个类。
import UIKit
import MobileCoreServices
class CustomClass: NSObject, NSItemProviderWriting, NSItemProviderReading {
var image2D:Data?
static var readableTypeIdentifiersForItemProvider = [kUTTypeData as String]
static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self {
return try self.init(itemProviderData: data, typeidentifier: kUTTypeData as String)
}
required init(itemProviderData data: Data, typeidentifier: String) throws {
super.init()
image2D = data
}
static var writableTypeIdentifiersForItemProvider = [kUTTypeData as String]
func loadData(withTypeIdentifier typeIdentifier: String, forItemProviderCompletionHandler completionHandler: @escaping (Data?, Error?) -> Void) -> Progress? {
let data2E = image2D
completionHandler(data2E, nil)
return nil
}
}
它编译,看起来不错?然后我在这个调用中引用它。
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
let itemProvider = NSItemProvider(object: CustomClass)
let dragItem = UIDragItem(itemProvider: itemProvider)
return [dragItem]
}
我收到错误消息...参数类型“CustomClass.Type”不符合预期类型“NSItemProviderWriting”...
但除此之外,似乎无法在这里、那里或任何地方找到更多关于如何推进此事的线索。
附带一点,我实现了其中一个,它奏效了......
itemProvider.registerDataRepresentation(forTypeIdentifier: kUTTypeJPEG as String, visibility: .all)
我实现了其中一个,它也很有效......
itemProvider.registerFileRepresentation(forTypeIdentifier: kUTTypeJPEG as String, fileOptions: [.openInPlace], visibility: .all)
所以我在想,代码不能有那么错……当然……
最佳答案
错误信息是正确的,你的行:
let itemProvider = NSItemProvider(object: customClass)
由于所述原因不正确。 object
参数需要一个符合 NSItemProviderWriting
协议(protocol)的类的实例。但是您传递的是一个实际的类,而不是该类的一个实例。
将 customClass
替换为您的 customClass
的实际实例。如果此方法在您的 customClass
中,则传递 self
。
let itemProvider = NSItemProvider(object: self)
顺便说一句 - 如果您遵循标准命名约定,这会减少混淆。类和结构名称应以大写字母开头。变量和方法名称以小写字母开头。所以你的 customClass
应该命名为 CustomClass
。
关于ios - 参数类型 'customClass.Type' 不符合预期类型 'NSItemProviderWriting',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534839/
我在有一个结构的地方遇到了这个错误,我想把它变成 UIDragItem 但我收到了这个错误 Argument type 'CustomColor.Type' does not conform to e
iOS 11.x swift 4 尝试实现自定义类以使用新的拖放协议(protocol)并需要一些 super 编码员的帮助。我创建了这个类。 import UIKit import MobileCo
创建了一个实现 NSItemProviderWriting 的类 它给出警告为: 1.Class 'DraggableEvent' does not conform to protocol 'NSIt
我正在使用自定义类 CollectionViewConfigurator 以通用方式处理我的 CollectionViewCell 的配置。 它工作得很好,这是示例类: protocol Config
我是一名优秀的程序员,十分优秀!