Is there a smarter/more proper way compared to what I am doing? I created a dictionary and go on enumerating and filling the year/month/date by looking at each fetched asset.
let assetFetchResult = PHAsset.fetchAssetsInAssetCollection(album, options: assetFetchOptions)
if assetFetchResult.count > 0 {
var fetchedAssets = [String:[String:[String:[PHAsset]]]]()
//[year[month[date:arrayOfPhotos]]]
assetFetchResult.enumerateObjectsUsingBlock({
object, index, stop in
let asset:PHAsset = object as! PHAsset
let dateComponents = NSCalendar.currentCalendar().components(.CalendarUnitDay | .CalendarUnitMonth | .CalendarUnitYear, fromDate: asset.creationDate)
//year group creation
if fetchedAssets["\(dateComponents.year)"] == nil {
fetchedAssets["\(dateComponents.year)"] = [String:[String:[PHAsset]]]()
}
//monthly group creation
if fetchedAssets["\(dateComponents.year)"]!["\(dateComponents.month)"] == nil {
fetchedAssets["\(dateComponents.year)"]!["\(dateComponents.month)"] = [String:[PHAsset]]()
}
//daily group creation
if fetchedAssets["\(dateComponents.year)"]!["\(dateComponents.month)"]!["\(dateComponents.day)"] == nil {
fetchedAssets["\(dateComponents.year)"]!["\(dateComponents.month)"]!["\(dateComponents.day)"] = [PHAsset]()
}
fetchedAssets["\(dateComponents.year)"]!["\(dateComponents.month)"]!["\(dateComponents.day)"]?.append(asset)
})
println(fetchedAssets)
return fetchedAssets
}