【问题标题】:NSMutableArray returning nil after adding a UIImage to the array将 UIImage 添加到数组后,NSMutableArray 返回 nil
【发布时间】: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 没有被添加到数组中。感谢您的回复。

标签: ios objective-c xcode uiimage phphotolibrary


【解决方案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 一起使用。
  • 安德烈,你帮了我很大的忙!!非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2022-01-14
  • 1970-01-01
  • 2015-05-04
相关资源
最近更新 更多