iOS 8.x에서는 PhotoKit을 사용하는것이 바람직하겠지만
개인적으로는 iOS 9.x이 출시되면 본격적으로 적용하는 것이 더 나을 것 같다.
UIImagePickerViewController 같은 경우에는 iOS 8.x에서 대응하는 클래스가 없다보니
UIImagePickerViewController를 호출하여, 리턴 값에서 Asset의 URL을 가지고,
PhotoKit에서 이미지를 요청하는 방식으로 사용하고 있다.
그렇기 때문에 PhotoKit을 완벽히 대응하는게 최선의 방법인가하는 의문이 든다.
iOS 8.1에 들어서면서 포토 스트림의 사진을 읽을 수 없는 버그를 발견했다.
AssetLibrary의 "assetForURL"을 사용하면, 리턴 값으로 ALAsset 을 반환하게 되는데 nil이 반환된다.
[library enumerateGroupsWithTypes:ALAssetsGroupPhotoStream usingBlock:^(ALAssetsGroup *group, BOOL *stop) { [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) { if ([asset.defaultRepresentation.url isEqual:처음요청한 Asset의 URL]) { // asset을 처리... *stop = YES; } }]; } failureBlock:^(NSError *error) { NSLog(@"Error: Cannot load asset from photo stream - %@", [error localizedDescription]); }];
코드를 보면 (물론 assetForURL을 호출한 후 asset이 값이 없을 때 위의 코드를 호출하도록 한다)
ALAssetsGroupPhotoStream으로 다시 그룹 조회를 하고,
ALAsset을 거꾸로 돌려서 처음에 요청한 URL과 일치하면 Asset을 처리하도록 한다.
'Mobile Application > iOS' 카테고리의 다른 글
[XCode] 버전별 dmg 리스트 업 (0) | 2015.06.09 |
---|---|
[PhotoKit] PHAsset을 추출하기. (0) | 2015.03.05 |
[PhotoKit] 카메라 롤과 일반 앨범 가져오기. (0) | 2015.03.01 |
[AssetLibrary] 원본 이미지 가져오기. (0) | 2015.03.01 |
[PhotoKit] 카메라 롤과 일반 앨범 분류하기. (0) | 2015.02.27 |