ios – 参数类型’customClass.Type’不符合预期类型’NSItemProviderWriting’

ios – 参数类型’customClass.Type’不符合预期类型’NSItemProviderWriting’,第1张

概述iOS 11.x Swift 4 尝试使用新的drop and drag协议实现自定义类,并需要一些超级编码器帮助.我创建了这个类. import UIKitimport MobileCoreServicesclass CustomClass: NSObject, NSItemProviderWriting, NSItemProviderReading {var image2D:Data iOS 11.x Swift 4

尝试使用新的drop and drag协议实现自定义类,并需要一些超级编码器帮助.我创建了这个类.

import UIKitimport MobileCoreServicesclass 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协议.但是你传递的是一个实际的类,而不是类的实例.

将customClass替换为customClass的实际实例.如果此方法在customClass中,则传递self.

let itemProvIDer = NSItemProvIDer(object: self)

顺便说一句 – 如果遵循标准命名约定,这将不那么令人困惑.类和结构名称应以大写字母开头.变量和方法名称以小写字母开头.所以你的customClass应该命名为CustomClass.

总结

以上是内存溢出为你收集整理的ios – 参数类型’customClass.Type’不符合预期类型’NSItemProviderWriting’全部内容,希望文章能够帮你解决ios – 参数类型’customClass.Type’不符合预期类型’NSItemProviderWriting’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1008477.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存