gpt4 book ai didi

ios - 如何使用照片框架从iOS相机胶卷中获取最新的照片?

转载 作者:行者123 更新时间:2023-11-29 05:43:34 25 4
gpt4 key购买 nike

我正在 iOS 中开发一个框架。我的框架中有一个功能,它可以使用照片框架从相机胶卷中获取最新的图像。该功能在大多数使用我的框架的项目中都能成功运行。但它仅在这些项目中的一个项目上崩溃。我尝试了多种方法来修复此崩溃,但此崩溃没有任何变化。

我检查了此项目设置,但找不到与我的项目设置有任何差异。我还检查了 plist 文件中的画廊权限。还有一点很有趣。该项目成功地使用了我的库的几乎所有功能,但当我的库尝试访问该项目中的 UIImagePickerController 时,它也会崩溃。

@interface Controller () 
{
UIBarButtonItem *barButtonItem;
}

@property(nonatomic, strong) PHFetchResult *fetchResult;
@property(nonatomic, strong) PHAsset *lastAsset;

@end

// calling this in the main thread
- (void)checkGalleryPermission
{
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusAuthorized)
{
[self setLastGalleryImageToPhotoGallery];
}
else if (status == PHAuthorizationStatusNotDetermined)
{
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status)
{
if (status == PHAuthorizationStatusAuthorized)
{
dispatch_async(dispatch_get_main_queue(), ^{

[self setLastGalleryImageToPhotoGallery];
});
}
}];
}
}

- (void)setLastGalleryImageToPhotoGallery
{
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
self.fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
if (self.fetchResult != nil)
{
self.lastAsset = [self.fetchResult lastObject];
if (self.lastAsset != nil)
{
PHImageRequestOptions *imageRequestOptions = [[PHImageRequestOptions alloc] init];
imageRequestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
imageRequestOptions.synchronous = YES; // tried NO
imageRequestOptions.version = PHImageRequestOptionsVersionCurrent;
[[PHImageManager defaultManager] requestImageForAsset:self.lastAsset targetSize:CGSizeMake(42.0f, 42.0f) contentMode:PHImageContentModeAspectFill options:imageRequestOptions resultHandler:^(UIImage *result, NSDictionary *info)
{
dispatch_async(dispatch_get_main_queue(), ^{

[self->barButtonItem setImage:[result imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
});
}];
}
}
}

我将日志放入上述函数中以查找崩溃的位置。在下面的代码之后它崩溃了。我无法弄清楚问题所在。项目设置是否对访问相机胶卷有任何限制,或者此问题是否与线程有关?

self.fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];

最佳答案

如果使用 UIImagePickerController 也发生相同的崩溃,则很可能是该设备上的 iOS 照片库出现问题。 iOS 照片库是底层的核心数据数据库,可能会损坏。你看过崩溃报告吗?如果您看到任何 SQL-/Core-Data 问题,则表明数据库存在问题。

关于ios - 如何使用照片框架从iOS相机胶卷中获取最新的照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com