删除 PHAssetCollection (Swift)
Deleting PHAssetCollection (Swift)
我创建了一个 PHAssetCollection 来为我的应用程序存放我的照片,它工作正常。但是,我试图拥有它,以便用户可以在按下按钮时删除 PHAssetCollection。如何删除我在以下代码中创建的整个 AssetCollection ("App Folder")?
创建 PHAssetCollection 的代码:
let albumName = "App Folder"
//Check if the folder exists, if not, create it
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.albumFound = true
self.assetCollection = first_Obj as! PHAssetCollection
}else{
//Album placeholder for the asset collection, used to reference collection in completion handler
var albumPlaceholder:PHObjectPlaceholder!
//create the folder
NSLog("\nFolder \"%@\" does not exist\nCreating now...", albumName)
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let request = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(albumName)
albumPlaceholder = request.placeholderForCreatedAssetCollection
},
completionHandler: {(success:Bool, error:NSError!)in
if(success){
println("Successfully created folder")
self.albumFound = true
if let collection = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([albumPlaceholder.localIdentifier], options: nil){
self.assetCollection = collection.firstObject as! PHAssetCollection
}
}else{
println("Error creating folder")
self.albumFound = false
}
})
}
PHAssetCollectionChangeRequest 中有一个名为 deleteAssetCollections:
的 class 方法,它就是这样做的:请求删除特定资产集合。查看文档,您似乎可以使用一组 PHAssetCollections 来调用它,如下所示:
PHAssetCollectionChangeRequest.deleteAssetCollections(self.assetCollection)
PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in
PHAssetCollectionChangeRequest.deleteAssetCollections([self.deleteTarget])
}, completionHandler: nil)
简单易用。希望能帮助到你 :
这是通过错误处理
以编程方式删除自定义相册的功能
func deleteAlbum(albumName: String){
let options = PHFetchOptions()
options.predicate = NSPredicate(format: "title = %@", albumName)
let album = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: options)
// check if album is available
if album.firstObject != nil {
// request to delete album
PHPhotoLibrary.shared().performChanges({
PHAssetCollectionChangeRequest.deleteAssetCollections(album)
}, completionHandler: { (success, error) in
if success {
print(" \(albumName) removed succesfully")
} else if error != nil {
print("request failed. please try again")
}
})
}else{
print("requested album \(albumName) not found in photos")
}
}
如何使用 -
deleteAlbum(albumName: "YourAlbumName")
我创建了一个 PHAssetCollection 来为我的应用程序存放我的照片,它工作正常。但是,我试图拥有它,以便用户可以在按下按钮时删除 PHAssetCollection。如何删除我在以下代码中创建的整个 AssetCollection ("App Folder")?
创建 PHAssetCollection 的代码:
let albumName = "App Folder"
//Check if the folder exists, if not, create it
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.albumFound = true
self.assetCollection = first_Obj as! PHAssetCollection
}else{
//Album placeholder for the asset collection, used to reference collection in completion handler
var albumPlaceholder:PHObjectPlaceholder!
//create the folder
NSLog("\nFolder \"%@\" does not exist\nCreating now...", albumName)
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let request = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(albumName)
albumPlaceholder = request.placeholderForCreatedAssetCollection
},
completionHandler: {(success:Bool, error:NSError!)in
if(success){
println("Successfully created folder")
self.albumFound = true
if let collection = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([albumPlaceholder.localIdentifier], options: nil){
self.assetCollection = collection.firstObject as! PHAssetCollection
}
}else{
println("Error creating folder")
self.albumFound = false
}
})
}
PHAssetCollectionChangeRequest 中有一个名为 deleteAssetCollections:
的 class 方法,它就是这样做的:请求删除特定资产集合。查看文档,您似乎可以使用一组 PHAssetCollections 来调用它,如下所示:
PHAssetCollectionChangeRequest.deleteAssetCollections(self.assetCollection)
PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in
PHAssetCollectionChangeRequest.deleteAssetCollections([self.deleteTarget])
}, completionHandler: nil)
简单易用。希望能帮助到你 : 这是通过错误处理
以编程方式删除自定义相册的功能 func deleteAlbum(albumName: String){
let options = PHFetchOptions()
options.predicate = NSPredicate(format: "title = %@", albumName)
let album = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: options)
// check if album is available
if album.firstObject != nil {
// request to delete album
PHPhotoLibrary.shared().performChanges({
PHAssetCollectionChangeRequest.deleteAssetCollections(album)
}, completionHandler: { (success, error) in
if success {
print(" \(albumName) removed succesfully")
} else if error != nil {
print("request failed. please try again")
}
})
}else{
print("requested album \(albumName) not found in photos")
}
}
如何使用 -
deleteAlbum(albumName: "YourAlbumName")