Photos(PHFetchResultChangeDetails)
8887 ワード
Photos(PHChange)
Photos(PHObjectChangeDetails)
Photos(PHFetchResultChangeDetails)
PHFetchResultChangeDetailsは主にPHFetchResultの変動を記録するために用いられ、これにより複数のデータに変動があるか否かを同時に判断することができる.
1 PHFetchResultの取得
2変更情報の取得
3 PHFetchResultの比較
4実戦演習
その他
ソースコード
Swift
参考資料
Photos Framework Reference
PHChange Class Reference
PHFetchResultChangeDetails Class Reference
ドキュメント変更レコード
時間
説明
2016-01-06
博文完成
著作権所有
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
Photos(PHObjectChangeDetails)
Photos(PHFetchResultChangeDetails)
PHFetchResultChangeDetailsは主にPHFetchResultの変動を記録するために用いられ、これにより複数のデータに変動があるか否かを同時に判断することができる.
1 PHFetchResultの取得
///
public var fetchResultBeforeChanges: PHFetchResult { get }
///
public var fetchResultAfterChanges: PHFetchResult { get }
2変更情報の取得
///
public var hasIncrementalChanges: Bool { get }
///
public var removedIndexes: NSIndexSet? { get }
///
public var removedObjects: [PHObject] { get }
///
public var insertedIndexes: NSIndexSet? { get }
///
public var insertedObjects: [PHObject] { get }
///
public var changedIndexes: NSIndexSet? { get }
///
public var changedObjects: [PHObject] { get }
///
public func enumerateMovesWithBlock(handler: (Int, Int) -> Void)
///
public var hasMoves: Bool { get }
3 PHFetchResultの比較
/// PHFetchResult
///
/// - parameter fromResult : PHFetchResult
/// - parameter toResult : PHFetchResult
/// - parameter changedObjects : [PHObject]
///
/// - returns: PHFetchResultChangeDetails
public convenience init(fromFetchResult fromResult: PHFetchResult, toFetchResult toResult: PHFetchResult, changedObjects: [PHObject])
4実戦演習
func photoLibraryDidChange(changeInfo: PHChange!) {
// Photos may call this method on a background queue;
// switch to the main queue to update the UI.
dispatch_async(dispatch_get_main_queue()) {
// Check for changes to the displayed album itself
// (its existence and metadata, not its member assets).
if let albumChanges = changeInfo.changeDetailsForObject(self.displayedAlbum) {
// Fetch the new album and update the UI accordingly.
self.displayedAlbum = albumChanges.objectAfterChanges as PHAssetCollection
self.navigationController.navigationItem.title = self.displayedAlbum.localizedTitle
}
// Check for changes to the list of assets (insertions, deletions, moves, or updates).
if let collectionChanges = changeInfo.changeDetailsForFetchResult(self.assetsFetchResults) {
// Get the new fetch result for future change tracking.
self.assetsFetchResults = collectionChanges.fetchResultAfterChanges
if collectionChanges.hasIncrementalChanges {
// Get the changes as lists of index paths for updating the UI.
var removedPaths: [NSIndexPath]?
var insertedPaths: [NSIndexPath]?
var changedPaths: [NSIndexPath]?
if let removed = collectionChanges.removedIndexes {
removedPaths = self.indexPathsFromIndexSet(removed)
}
if let inserted = collectionChanges.insertedIndexes {
insertedPaths = self.indexPathsFromIndexSet(inserted)
}
if let changed = collectionChanges.changedIndexes {
changedPaths = self.indexPathsFromIndexSet(changed)
}
// Tell the collection view to animate insertions/deletions/moves
// and to refresh any cells that have changed content.
self.collectionView.performBatchUpdates(
{
if removedPaths {
self.collectionView.deleteItemsAtIndexPaths(removedPaths)
}
if insertedPaths {
self.collectionView.insertItemsAtIndexPaths(insertedPaths)
}
if changedPaths {
self.collectionView.reloadItemsAtIndexPaths(changedPaths)
}
if (collectionChanges.hasMoves) {
collectionChanges.enumerateMovesWithBlock() { fromIndex, toIndex in
let fromIndexPath = NSIndexPath(forItem: fromIndex, inSection: 0)
let toIndexPath = NSIndexPath(forItem: toIndex, inSection: 0)
self.collectionView.moveItemAtIndexPath(fromIndexPath, toIndexPath: toIndexPath)
}
}
}, completion: nil)
} else {
// Detailed change information is not available;
// repopulate the UI from the current fetch result.
self.collectionView.reloadData()
}
}
}
}
その他
ソースコード
Swift
参考資料
Photos Framework Reference
PHChange Class Reference
PHFetchResultChangeDetails Class Reference
ドキュメント変更レコード
時間
説明
2016-01-06
博文完成
著作権所有
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog