如何以与 iPhoto 相同的方式订购 ALAssetsGroup
Posted
技术标签:
【中文标题】如何以与 iPhoto 相同的方式订购 ALAssetsGroup【英文标题】:How to order ALAssetsGroup the same way iPhoto does 【发布时间】:2014-03-23 21:28:26 【问题描述】:我可以通过 ALAssetsGroupAlbum 枚举并创建一个按专辑名称排序的 NSMutableArray,如下所示,没有问题。但是,我真正想做的是以与 iPhone 的照片应用程序相同的方式对相册进行排序,即遵循 iPhoto 上设置的手动顺序,这可能不是按字母顺序排列的。我想知道资产库是否在某处保存此订单信息。有谁知道苹果是如何做到这一点的?谢谢。
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop)
ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos];
[group setAssetsFilter:onlyPhotosFilter];
if ([group numberOfAssets] > 0)
// [self.groups addObject:group];
[self.groups insertObject:group atIndex:0];
else
//sort groups by name
[self.groups sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
return [[obj1 valueForProperty:ALAssetsGroupPropertyName] localizedCaseInsensitiveCompare:[obj2 valueForProperty:ALAssetsGroupPropertyName]];
];
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
【问题讨论】:
您好,我也希望以与 Photos.app 相同的顺序显示相册,有什么更新吗? 不幸的是,不是。而且,我也停止了寻找。我决定将它们分成几个部分,例如专辑、事件和面孔,并按字母顺序对它们进行排序。它看起来不太好,但我的目的可以接受。 好的,谢谢你的回答。 【参考方案1】:// 这对我有用。这是一个 Swift 2 版本。 对任何属性进行排序。我使用了专辑名称。
var albums:[ALAssetsGroup] = []
// 枚举以获取您的相册 . . .
func sortAndReloadAlbums()
self.albums.sortInPlace( (album1:ALAssetsGroup, album2:ALAssetsGroup) -> Bool in
let album1Name: String = String(album1.valueForProperty(ALAssetsGroupPropertyName))
let album2Name: String = String(album2.valueForProperty(ALAssetsGroupPropertyName))
return album1Name < album2Name
)
self.tableView.reloadData()
【讨论】:
以上是关于如何以与 iPhoto 相同的方式订购 ALAssetsGroup的主要内容,如果未能解决你的问题,请参考以下文章
如何以与 np.where 相同的方式使用 Tensorflow.where?
如何以与“TABLE name;”相同的方式格式化 postgres 结果做?
如何以与 OpenGL 中的点精灵相同的方式渲染屏幕对齐的矩形