2016-05-02 2 views
1

私のアプリケーションでUIImagePickerControllerを使用してイメージを取得しています。私はアプリケーションでそれをピックアップした後、iOS PhotoLibraryからこの画像を同期して削除する必要があります。UIImagePickerControllerを使用してフォトライブラリからイメージを削除する方法

- (BOOL)createAndInsertNewElementFromDictionary:(NSDictionary*)dict 
{ 
AlbumElement *newElement; 

if ([dict[UIImagePickerControllerMediaType] 
    isEqualToString:(NSString*)kUTTypeMovie]) 
{ 
    NSURL *mediaUrl = dict[UIImagePickerControllerMediaURL]; 
    newElement = [AlbumElement createElementWithMediaUrl:mediaUrl 
               inAlbum:_album.name]; 

} 
else if ([dict[UIImagePickerControllerMediaType] 
      isEqualToString:(NSString*)kUTTypeImage]) 
{ 
    UIImage *image = [dict[UIImagePickerControllerOriginalImage] copy]; 
    newElement = [AlbumElement createElementWithImage:image 
               inAlbum:_album.name]; 
} 

if (newElement != nil) 
{ 
    [_album.elements insertObject:newElement atIndex:0]; 

    UIImage *icon = [UIImage imageWithContentsOfFile:[newElement iconFullPath]]; 
    [AlbumElement writeImageToFileWithImage:icon 
           atFullPath:_album.albumIconPath]; 
} 
else 
{ 
    NSLog(@"Element was NOT added!"); 
    return NO; 
} 

return YES; 
} 

答えて

3
NSURL *url = [dict objectForKey:@"UIImagePickerControllerReferenceURL"] ; 

PHPhotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary]; 
[library performChanges:^{ 
// Here assetsURLs is array of url's you want to delete 
    PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObject:url] options:nil]; 
    [PHAssetChangeRequest deleteAssets:assetsToBeDeleted]; 
} completionHandler:^(BOOL success, NSError *error) 
{ 
    // Check error and success here 
}]; 
+0

こんにちは、ありがとう、私のためにうまくいきます。写真を削除するとメッセージが表示されます。そのメッセージを修正する方法。 – PPreeti

+0

これは確認メッセージです。このアプローチでは、デフォルトではリンゴから、これを隠すことはできません。私は別のアプローチを見つけたら分かち合うつもりです。詳細については、このリンクをチェックしてください。http://stackoverflow.com/questions/31922796/disable-confirmation-on-delete-request-in-phphotolibrary –

+0

写真ライブラリから複数の画像を選択することは可能ですか? – PPreeti

0

あなたはこのような何かを行うことができ、

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 


NSURL *imgURL = info[UIImagePickerControllerReferenceURL]; 

[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{ 


    PHAsset *imageAssetTodelete = [PHAsset fetchAssetsWithALAssetURLs:imgURL options:nil]; 

    [PHAssetChangeRequest deleteAssets:imageAssetTodelete]; 


} completionHandler:^(BOOL success, NSError * _Nullable error) { 

    if (error) { 

     NSLog(@"err description : %@",[error localizedDescription]); 
    } 
    if (success) { 

     NSLog(@"image deleted successfully"); 
    } 


}]; 

} 

そして、あなたのクラスで@import Photos;することを忘れないでください。

これは役に立ちます。

関連する問題