2015-02-06 59 views
0

我想以編程方式從一個重複的相冊中刪除資源(照片不是)。我可以使用照片框架刪除相冊如何從相冊中刪除資產而不從照片應用中刪除資產/照片?

我想知道如何從相冊中刪除資產,而不從照片應用中完全刪除它。有多個地方我想要使用此,例如將資產從一個專輯移動到另一個,等

專輯是可編輯的,因爲我已經創建它們。

有沒有辦法在iOS 6或iOS 7的設備上做到這一點?

回答

0

您可以將該圖像的imageData設置爲零,這樣您就可以刪除圖像。

ALAssetsLibrary *lib = [ALAssetsLibrary new]; 
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop) 
{ 
    if(group == nil) 
    { 
      return ; 
    } 

    if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"YourAlbumNam"]) 
    { 
     [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) 
     { 
      if(asset.isEditable) 
      { 
       if([[asset valueForProperty:ALAssetPropertyAssetURL] isEqual:yourAssetURL]) 
       { 
         [asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) 
         { 
          // Check for error 
         }]; 
       } 
       } 
     }]; 
    }     
failureBlock:^(NSError *error) 
{ 

}]; 
+0

我不想刪除資產

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:self.myAlbum assets:self.albumAssetsFetchResult]; [request removeAssets:@[asset]]; } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Finished removing asset from the album. %@", (success ? @"Success" : error)); }]; 

的代碼在下面的鏈接提供。我只想從相冊中刪除它。它應該存在於相機膠捲 – 2015-02-07 04:55:27

+0

@ShravyaBoggarapu:它應該存在於相機膠捲中,我只是將其從相冊中刪除。你有沒有試過這個代碼? – 2015-02-07 06:22:50

+0

它不工作。並且檢索到的資產不可編輯,這就是爲什麼它不會進一步發展。 – 2016-06-02 13:18:18

1

斯威夫特4版Tgiri的回答:

// you want to pass in your asset collection and asset 
let album: PHAssetCollection 
let asset: PHAsset 

PHPhotoLibrary.shared().performChanges({ 
      guard let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) else { return } 
      let fastEnumeration = NSArray(array: [asset]) 
      albumChangeRequest.removeAssets(fastEnumeration) 
     }, completionHandler: { success, error in 
     if success { 
      print("removed") 
     } else { 
      print("not removed") 
     } 
    })