Anc*_*cle 33 xcode objective-c ios phphotolibrary ios10
我尝试使用以下代码将图像放入自定义相册:
PHAssetCollection *album = [self getMyAlbum];
UIImage *image = [self getMyImage];
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
PHObjectPlaceholder * placeHolder = createAssetRequest.placeholderForCreatedAsset;
PHAssetCollectionChangeRequest *albumChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:album];
if(placeHolder){
[albumChangeRequest addAssets:@[ placeHolder ]];
}
} completionHandler:^(BOOL success, NSError *error) {
//doesen't matter
}];
Run Code Online (Sandbox Code Playgroud)
因此,我在此行的用户日志中收到许多错误 createAssetRequest.placeholderForCreatedAsset
喜欢
1 CoreFoundation __exceptionPreprocess + 1245624
2 libobjc.A.dylib objc_exception_throw + 34136
3张照片__48- [PHChangeRequestHelper generateUUIDIfNecessary] _block_invoke + 116552
2 libdispatch.dylib _dispatch_semaphore_wait_slow + 79828
3张照片 - [PHChangeRequestHelper generateUUIDIfNecessary] + 115992
4张照片 - [PHAssetCreationRequest占位符ForCreatedAsset] + 244020
所以[PHChangeRequestHelper generateUUIDIfNecessary]让我崩溃
我只在iOS> 10上看到这个,我无法在模拟器中重现这一点.
它是什么?如何解决?
小智 1
请尝试下面的代码。
__block NSString* tempPath;
// Add it to the photo library
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
if (self.assetCollection) {
PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:self.assetCollection];
[assetCollectionChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
}
tempPath = [[assetChangeRequest placeholderForCreatedAsset] localIdentifier];
} completionHandler:^(BOOL success, NSError *error) {
PHFetchResult* assetResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[tempPath] options:nil];
if (!success) {
NSLog(@"Error creating asset: %@", error);
} else {
PHFetchResult* assetResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[tempPath] options:nil];
PHAsset *asset = [assetResult firstObject];
[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
UIImage* newImage = [UIImage imageWithData:imageData];
self.imgView.image = newImage;
}];
}
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |