func processInputItems(extensionContext: NSExtensionContext) async {
do {
try setupSharedContainer()
let itemsAttachments = extensionContext.inputItems
.compactMap { $0 as? NSExtensionItem }
.compactMap(\.attachments)
.flatMap { $0 }
for itemProvider in itemsAttachments where itemProvider.hasItemConformingToTypeIdentifier(UTType.url.identifier) {
let data = try await itemProvider.loadItem(forTypeIdentifier: UTType.url.identifier, options: nil)
if let data = data as? URL {
try await handleLoadedData(data)
} else {
throw ShareError.somethingWentWrong
}
}
state = .success
} catch {
print("\(#filePath):\(#line)", error.localizedDescription)
presentErrorAlert(for: ShareError.somethingWentWrong)
}
}
At let data = try await itemProvider.loadItem(...), there is an error:
/Whisperboard/App/ShareExtension/ShareViewController.swift:237:30 Passing argument of non-sendable type 'NSItemProvider' outside of main actor-isolated context may introduce data races
At
let data = try await itemProvider.loadItem(...)
, there is an error: