我可以通过ALAssetsGroupAlbum枚举并创建一个按照下面的专辑名称排序的NSMutableArray而不会出现问题。但是,我真正想做的是按照iPhone的照片应用程序的方式对相册进行排序,这是按照iPhoto上设置的手动顺序排列的,这可能不是按字母顺序排列的。我想知道Assets Library是否在某处保存了此订单信息。有谁知道Apple如何做到这一点?感谢。
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];
}
答案 0 :(得分: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()
}