作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前设置了一个共享扩展程序,可以将从照片应用程序中选择的图像上传到服务器。使用下面的代码可以正常工作。
int fileNum=10;
NSItemProvider *attachment = inputItem.attachments[0];
if ([attachment hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage])
{
[attachment loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:nil completionHandler:^(id item,NSError *error)
{
if (item)
{
NSLog (@"image %@",item);
//upload image here
NSData *data=[NSData dataWithContentsOfURL:item];
activityRecord.activityType=@"Images";
AppRecord *appRecord=[[AppRecord alloc] init];
appRecord.fileName=[NSString stringWithFormat:@"activity_%@%i(%i).jpg",activityRecord.supplierID,activityRecord.activityID,fileNum];
appRecord.fileBytes=data;
[fileRecords addObject:appRecord];
activityRecord.activityFiles=fileRecords;
[[Settings getInstance] uploadActivityRecord:activityRecord withDelegate:self];
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
}];
}
我之前有一个问题,未调用 loadItemForTypeIdentifier
方法,通过在完成 block 中调用 completeRequestReturningItems
解决了这个问题。我现在遇到的问题是,如果我想上传多个文件,那么我需要在 for 循环(针对每个图像)中调用 loadItemForTypeIdentifier
但是如果 completeRequestReturningItems
方法将在第一个图像/项目之后调用?
非常感谢保罗
最佳答案
我最近遇到了同样的问题,并且能够通过添加一个计数器并在图像成功完成它们的 block 时倒计时来解决它。在 loadItemForTypeIdentifier
完成 block 中,我然后检查是否在调用 dispatch_once
block 中的 completeRequestReturningItems
之前调用了所有项目(只是为了安全起见).
__block NSInteger imageCount;
static dispatch_once_t oncePredicate;
NSItemProvider *attachment = inputItem.attachments[0];
if ([attachment hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage])
{
[attachment loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:nil completionHandler:^(NSData *item ,NSError *error)
{
if (item)
{
// do whatever you need to
imageCount --;
if(imageCount == 0){
dispatch_once(&oncePredicate, ^{
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
});
}
}
}];
}
我不能说我觉得这是一个过于优雅的解决方案,所以如果有人知道处理这个常见用例的更合适的方法,我很乐意听听。
关于ios - 从共享扩展上传多张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275662/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!