2017-01-04 2 views
1

PhotoKit을 사용하여 앨범을 만들었을 때 프로젝트에 모든 앨범이 없기 때문에 컴퓨터에서 가져온 일부 앨범을 검색 할 수 없습니다. 내 코드를 게시합니다.iOS8 PhotoKit, 일부 앨범을 찾을 수 없습니다.

//get system albums 
PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init]; 
options.networkAccessAllowed = YES; 
options.synchronous = YES; 
KVPhotoAlbum * userAlum = nil; 
PHCachingImageManager * manager = [[PHCachingImageManager alloc] init]; 
PHFetchResult * systemAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil]; 
for (id object in systemAlbums) { 
    if ([object isKindOfClass:[PHAssetCollection class]]) { 
     PHAssetCollection * collection = (PHAssetCollection*)object; 
     if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumVideos) { 
      continue; 
     } 
     //get photo 
     PHFetchResult * imageResults = [PHAsset fetchAssetsInAssetCollection:collection options:nil]; 
     if (imageResults.count) { 
      KVPhotoAlbum * album = [[KVPhotoAlbum alloc] init]; 
      album.collection = collection; 
      album.title = [collection valueForKey:@"localizedTitle"]; 
      album.photoCount = imageResults.count; 
      if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumUserLibrary) { 
       //camera 
       userAlum = album; 
      }else { 
       [_albums addObject:album]; 
      } 
      PHAsset * asset = [imageResults lastObject]; 
      [manager requestImageForAsset:asset targetSize:CGSizeMake(60, 60) contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
       album.image = result; 
      }]; 
     } 
    } 
} 
//get albums created by user 
PHFetchResult * customAlbums = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil]; 
for (id object in customAlbums) { 
    if ([object isKindOfClass:[PHAssetCollection class]]) { 
     PHAssetCollection * collection = (PHAssetCollection*)object; 
     if (collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumVideos) { 
      continue; 
     } 
     //get photo 
     PHFetchResult * imageResults = [PHAsset fetchAssetsInAssetCollection:collection options:nil]; 
     if (imageResults.count) { 
      KVPhotoAlbum * album = [[KVPhotoAlbum alloc] init]; 
      album.collection = collection; 
      album.title = [collection valueForKey:@"localizedTitle"]; 
      album.photoCount = imageResults.count; 
      [_albums addObject:album]; 
      PHAsset * asset = [imageResults lastObject]; 
      [manager requestImageForAsset:asset targetSize:CGSizeMake(60, 60) contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
       album.image = result; 
      }]; 
     } 
    } 
} 

코드가 너무 많아서 자세한 내용을 추가해야합니다.

+0

신체가이 문제를 해결하는 방법을 알고 있습니까? –

+0

안녕하세요, 아무도 몰라요? –

답변

0

나는 혼자서 그것을 풀었습니다. 이제 나는 길을 보여줍니다. "PHAssetCollectionTypeAlbum"앨범 유형이 있습니다.이 앨범은 컴퓨터에서 가져온 앨범을 검색 할 수 있습니다.

PHFetchResult * importAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];