【问题标题】:How to order ALAssetsGroup the same way iPhoto does如何以与 iPhoto 相同的方式订购 ALAssetsGroup
【发布时间】: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 相同的顺序显示相册,有什么更新吗?
  • 不幸的是,不是。而且,我也停止了寻找。我决定将它们分成几个部分,例如专辑、事件和面孔,并按字母顺序对它们进行排序。它看起来不太好,但我的目的可以接受。
  • 好的,谢谢你的回答。

标签: ios alassetslibrary


【解决方案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()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2012-07-17
    • 2012-08-16
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多