我正在处理一个具有拖放功能的SwiftUI项目,并且我正在使用UniformTypeIDENTIFILES框架来处理数据.然而,在Drop操作期间try 从info.itemProviders访问第一个项提供程序时遇到了一个问题.

以下是代码的相关部分:

import UniformTypeIdentifiers

class ButtonDropDelegate: NSObject, DropDelegate {
    // Your delegate code and properties here...

    func performDrop(info: DropInfo) -> Bool {
        // Check if the drop contains data with the specified UTI (UTType.item)
        if info.hasItemsConforming(to: [UTType.item]) {
            // Load the dragged data as Data
            if let itemProvider = info.itemProviders.first {
                itemProvider.loadDataRepresentation(forTypeIdentifier: UTType.item.identifier) { data, error in
                    if let data = data {
                        do {
                            // Unarchive the Data to get the original [Any] array
                            if let keyPathArray = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [Any] {
                                // Process the keyPathArray here...
                                print("Received keyPathArray:", keyPathArray)
                            }
                        } catch {
                            print("Error unarchiving data:", error)
                        }
                    }
                }
            }
        }

        return true
    }

    // Other delegate methods...
}

问题出在If let itemProvider=info.itemProviders.first行,其中Xcode显示错误"如果没有上下文类型,则无法解析对成员‘first’的引用".

我使用的是Xcode13,目标是iOS 15.0.如何解决此错误并正确访问Drop委托中的第一个项提供程序?任何帮助或指导都将不胜感激.谢谢.

请记住提供有关您的项目设置、任何其他相关代码以及您try 解决问题的步骤的其他详细信息,以使问题更全面.

推荐答案

DropInfo号楼里没有itemProviders处房产.也许你把这和UIPasteboard搞混了?

使用itemProviders(for:)可获取与指定的UTType集匹配的项提供程序:

if let itemProvider = info.itemProviders(for: [UTType.item]).first {

Swift相关问答推荐

为什么不能使用actor作为AsyncSequence中的状态机类型?

什么是Swift Concurrency中任务组的正常退出

SWIFT异步/等待,多个监听程序

如何在SwiftUI的文本视图中显示NSMutableAttributedString?

Swift中从头开始的基本HTTP客户端

try 从闭包访问返回的字符串时出现无法将类型 '()' 的返回表达式转换为返回类型 'String'编译器错误

如何通过 Enum 属性使用新的 #Predicate 宏获取

Xcode创建GitHub仓库,但未推送所有文件

如何返回一个通过 SwiftUI 中的另一个协议间接继承 View 协议的 struct ?

从 iPhone 中的安全飞地获取真正的随机数?

UIButton 配置不更新按钮标题

将基于MyProtocol的泛型函数的参数更改为使用存在的any MyProtocol或some MyProtocol是否会受到惩罚?

Swift-如何接受多个(联合)类型作为参数

如何在 ZStack 中单独下移卡片?

NSFontAttributeName 已更改为 String

subscribeOn 和 observeOn 的顺序重要吗?

你如何在 UIBarItem 中使用 setTitleTextAttributes:forState?

如何在 SwiftUI 中创建带有图像的按钮?

两个 Date 对象之间的所有日期 (Swift)

如何将多个枚举值作为函数参数传递