将 UIImage 添加到数组后,NSMutableArray 返回 nil
Posted
技术标签:
【中文标题】将 UIImage 添加到数组后,NSMutableArray 返回 nil【英文标题】:NSMutableArray returning nil after adding a UIImage to the array 【发布时间】:2016-04-03 07:30:09 【问题描述】:我想获取在 photoLibrary 中拍摄的最后一张照片并将其添加到将在 UIActivivtyViewController 中使用的数组中。当 UIActivityViewController 出现时,图像不会显示,并且 UIImage 似乎从未添加到数组中。
这就是我所拥有的,
NSMutableArray *items = [[NSMutableArray alloc]init];
[items addObject:@"someText"];
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
PHAsset *lastAsset = [fetchResult lastObject];
__block UIImage *shareImage;
PHImageRequestOptions* options = [[PHImageRequestOptions alloc]init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.version = PHImageRequestOptionsVersionUnadjusted;
options.synchronous = YES;
[[PHImageManager defaultManager] requestImageForAsset:lastAsset
targetSize:PHImageManagerMaximumSize
contentMode:PHImageContentModeDefault
options:PHImageRequestOptionsVersionCurrent
resultHandler:^(UIImage *result, NSDictionary *info)
dispatch_async(dispatch_get_main_queue(), ^
shareImage = result;
[items addObject:shareImage]; );
];
NSMutableArray *activityItems = [NSMutableArray arrayWithArray:items];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
任何帮助将不胜感激。我是 ios 开发和编程的新手,我一直很难用这个。
谢谢
【问题讨论】:
您的代码很难这样阅读。请将其粘贴回去并按照您在屏幕上看到的格式对其进行格式化。 另外,您还没有具体描述出了什么问题。 好的,我调整了代码并在问题中添加了更多细节。调用 UIActivityViewController 时没有出现 UIImage。看来 UIImage 没有被添加到数组中。感谢您的回复。 【参考方案1】:UIImage
实际上已添加到您的 items
数组中。在您创建activityItems
数组并呈现UIActivityViewController
时,添加UIImage
的块可能尚未完成。如果您将呈现逻辑添加到块中(在将图像添加到数组之后)它应该可以工作!
- (void)yourMethod
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject:@"someText"];
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
PHAsset *lastAsset = [fetchResult lastObject];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.version = PHImageRequestOptionsVersionUnadjusted;
options.synchronous = YES;
[[PHImageManager defaultManager] requestImageForAsset:lastAsset
targetSize:PHImageManagerMaximumSize
contentMode:PHImageContentModeDefault
options:PHImageRequestOptionsVersionCurrent
resultHandler:^(UIImage *result, NSDictionary *info)
dispatch_async(dispatch_get_main_queue(), ^
[items addObject:result];
[self presentActivityControllerWithItems:items];
);
];
- (void)presentActivityControllerWithItems:(NSArray *)items
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
【讨论】:
这正是我的想法。你是说我应该在[items addObject:shareImage]下的UIActivityViewController; ??这就是我所做的,但没有奏效。感谢您的回复! 文本(它与 UIImage 一起使用。 安德烈,你帮了我很大的忙!!非常感谢您的帮助。以上是关于将 UIImage 添加到数组后,NSMutableArray 返回 nil的主要内容,如果未能解决你的问题,请参考以下文章
检查 UIImageView 中的图像不是占位符图像并附加到 UIImage 数组