Решения работают для меня, iOS прекратила такую поддержку в iOS12, поэтому я решил эту проблему.Ранее я использовал этот обработчик завершения для этого метода loadItemForTypeIdentifier
completionHandler:^(id <NSSecureCoding> urlItem, NSError *error)
Информация о типе для первого параметра вашего блока завершение должен быть установлен в класс ожидаемого типа.Например, при запросе текстовых данных вы можете установить тип первого параметра в NSString или NSAttributedString.Поставщик элементов может выполнять простые преобразования типов данных в указанный класс, например, из NSURL в NSData или NSFileWrapper или из NSData в UIImage (в iOS) или NSImage (в macOS).Если данные не могут быть извлечены или приведены к указанному классу, ошибка передается в блок завершения.
- (void)getFilelist :(NSItemProvider *)itemProvider
setPublicIdentifier:(NSString *)indentifier
:(void (^)(void))complete {
[itemProvider loadItemForTypeIdentifier:indentifier options:nil completionHandler:^(NSURL * _Nullable item, NSError * _Null_unspecified error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSURL *selectURl = (NSURL*)item;
if ([[selectURl pathExtension] isEqualToString:@"pdf"] || [[selectURl pathExtension] isEqualToString:@"xlsx"] || [[selectURl pathExtension] isEqualToString:@"csv"]) {
int randomID = arc4random() % 9000 + 1000;
NSString *filename = [[(NSURL*)item path] lastPathComponent];
if ([filename isEqualToString:@"FullSizeRender.jpg"]) {
filename = [NSString stringWithFormat:@"MD%d.jpg",randomID];
}
[_items addObject:selectURl.absoluteString];
complete();
}
});
}];
}
Вызовите это следующим образом
for (NSItemProvider *itemProvider in item.attachments) {
if([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeText]) {
[self getFilelist:itemProvider
setPublicIdentifier:(NSString *)kUTTypeText
:^{
openFile(self, i, totalnt);
}];
}
if([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePDF]) {
[self getFilelist:itemProvider
setPublicIdentifier:(NSString *)kUTTypePDF
:^{
openFile(self, i, totalnt);
}];
}
if([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeSpreadsheet]) {
[self getFilelist:itemProvider
setPublicIdentifier:(NSString *)kUTTypeSpreadsheet
:^{
openFile(self, i, totalnt);
}];
}
}