私も同じ問題を抱えていました。現時点では、Photos フレームワークに切り替えることはできませんが、幸いなことに回避策を見つけました。Photo Stream に大量の写真が含まれていると動作が遅くなる可能性がありますが、何もないよりはましです。
アイデアは、フォト ストリーム アセット グループ内のすべてのアイテムを列挙し、必要な URL を各アイテムの URL と比較することです。幸いなことに、それはまだ機能します。
私はこのようなメソッドを持っています (ライブラリは同じクラスの ALAssetsLibrary プロパティです。このコード内で初期化する必要があるかもしれません):
- (void)loadItem:(NSURL *)url withSuccessBlock:(void (^)(void))successBlock andFailureBlock:(void (^)(void))failureBlock {
[library assetForURL:url
resultBlock:^(ALAsset *asset)
{
if (asset){
//////////////////////////////////////////////////////
// SUCCESS POINT #1 - asset is what we are looking for
//////////////////////////////////////////////////////
successBlock();
}
else {
// On iOS 8.1 [library assetForUrl] Photo Streams always returns nil. Try to obtain it in an alternative way
[library enumerateGroupsWithTypes:ALAssetsGroupPhotoStream
usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if([result.defaultRepresentation.url isEqual:url])
{
///////////////////////////////////////////////////////
// SUCCESS POINT #2 - result is what we are looking for
///////////////////////////////////////////////////////
successBlock();
*stop = YES;
}
}];
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset from photo stream - %@", [error localizedDescription]);
failureBlock();
}];
}
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset - %@", [error localizedDescription]);
failureBlock();
}
];
}
お役に立てれば。