[英]Argument type 'customClass.Type' does not conform to expected type 'NSItemProviderWriting'
iOS 11.x Swift 4
嘗試使用新的drop and drag協議實現自定義類,並需要一些超級編碼器幫助。 我創建了這個類。
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
協議。 但是你傳遞的是一個實際的類,而不是類的實例。
更換customClass
與你的實際情況customClass
。 如果此方法在customClass
,則傳遞self
。
let itemProvider = NSItemProvider(object: self)
順便說一句 - 如果遵循標准命名約定,這將不那么令人困惑。 類和結構名稱應以大寫字母開頭。 變量和方法名稱以小寫字母開頭。 所以你的customClass
應該命名為CustomClass
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.