ЯВЛЯЕТСЯ ЛИ образ PHAsset уникальным для всех iPhone?

При извлечении изображений с помощью фреймворка Photo я получаю все изображения галереи из объекта PHAsset. Мой вопрос заключается в том, являются ли изображения из PHAsset глобально уникальными или специфичными для устройства. Могу ли я использовать один и тот же образ PHAsset на разных iPhone? я не хочу преобразовывать UIImage в NSData и снова преобразовывать его из NSData в UIImage.

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

//set up fetch options, mediaType is image.
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeImage];

for (NSInteger i =0; i < smartAlbums.count; i++) {
    PHAssetCollection *assetCollection = smartAlbums[i];
    PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:options];

    NSLog(@"sub album title is %@, count is %ld", assetCollection.localizedTitle, (unsigned long)assetsFetchResult.count);
    if (assetsFetchResult.count > 0 && ![assetCollection.localizedTitle isEqualToString: @"Recently Deleted"]) {            

        for (PHAsset *asset in assetsFetchResult) {
            PHImageRequestOptions *option = [PHImageRequestOptions new];
            option.synchronous = YES;

            [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(self.view.frame.size.width, self.view.frame.size.height-100) contentMode:PHImageContentModeAspectFit options:option resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                [mutArrAsset addObject:asset];

                [self.imagesURLArray addObject:result];
            }];

            NSLog(@"asset are %@", asset);
        }}}

person Rajeev Singh    schedule 05.07.2017    source источник


Ответы (1)


PHAsset представляет собой указатель на изображение в библиотеке фотографий пользователя. У людей разные изображения на телефоне, поэтому нет смысла передавать этот указатель на другой телефон. По этой причине идентификатор PHAsset называется localIdentifier.

Если вы хотите передать изображение с одного устройства на другое, вы должны передать его как NSData.

person Jon Rose    schedule 05.07.2017