将 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 数组

如何将图像存储到 UIImage 数组(Swift)

setContentOffset 到滚动视图中的 UIImage 位置

如何将 PFFile 数组转换为 UIImage 数组?

将文本添加到 UIImage ......错误的地方

如何将 iPhone 画廊中的图像添加到数组 IOS