【发布时间】:2015-08-16 19:42:57
【问题描述】:
我一直在尝试寻找在 iOS 8 中使用 Photos API 获取专辑名称的替代方法。对于 ALAssets,我们可以使用:valueForProperty:ALAssetsGroupPropertyName 但是对于 Photos API,我似乎找不到替代方法.有:localizedTitle 在PHAssetCollection 下,但这也不对,它只是给了我城市名称。我正在寻找可以返回组的实际名称的东西,包括与 iTunes 同步的组。
如果您能在自己的应用程序中执行此操作,我们将不胜感激。 Apple 鼓励我们仅将 Photos API 用于与 8.0 关联的应用,因此我宁愿不要同时使用 ALAssetLibrary 和 Photos。
代码:
- (NSString *)nameForAlbumInCollection:(id)collection
{
NSString *title = nil;
if ([PHAsset class])
{
title = [collection localizedTitle];
}
else
{
title = [collection valueForProperty:ALAssetsGroupPropertyName];
}
return title;
}
- (void)setup
{
self.recentsCollectionDataSource = [[NSMutableOrderedSet alloc]init];
self.favoritesCollectionDataSource = [[NSMutableOrderedSet alloc]init];
self.albumsTableDataSource = [[NSMutableOrderedSet alloc]init];
NSMutableArray *segmentTitles = [[NSMutableArray alloc]init];
self.assetsFetchResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum | PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
if (!self.parentController.canTakeOrChooseVideo)
{
fetchOptions.predicate = [NSPredicate predicateWithFormat:@"mediaType = %i",PHAssetMediaTypeImage];
}
for (PHAssetCollection *sub in self.assetsFetchResult)
{
PHFetchResult *assetsInCollection = [PHAsset fetchAssetsInAssetCollection:sub options:nil];
for (PHAsset *asset in assetsInCollection)
{
NSLog(@"%@",[self nameForAlbumInCollection:sub]);
[self.recentsCollectionDataSource addObject:asset];
if (![segmentTitles containsObject:@"Recents"])
{
[segmentTitles addObject:@"Recents"];
[segmentTitles addObject:@"Albums"];
}
if (asset.isFavorite)
{
[self.favoritesCollectionDataSource addObject:asset];
if (![segmentTitles containsObject:@"Favorites"])
{
[segmentTitles addObject:@"Favorites"];
}
}
}
}
}
【问题讨论】:
-
您能否在您的案例中显示 PHAssetCollection 的localizedTitle 属性的一些结果,因为我一直在使用它并且它对我来说很好用?
-
您能否添加 nameForAlbumInCollection 方法,因为它是主要方法并提供上述程序给出的输出?上面的代码也有很多问题。 (不使用 fetchOptions,自己创建标题等)
-
它们不是我的代码中的问题,我正在构建自己的资产数据源。
-
你能提供这个方法定义吗? nameForAlbumInCollection?
-
添加方法定义
标签: ios objective-c alassetslibrary photosframework phphotolibrary