2015-08-09 4 views
2

Мне интересно, как можно дублировать PHAsset и сохранить контекст фотографии. Например, если фотография была расположена в определенном альбоме, я хочу, чтобы дубликат находился в том же альбоме рядом с оригиналом. И если возможно, история редактирования будет сохранена, что позволит пользователю при необходимости вернуть дубликат оригиналу.Как дублировать PHASset?

Можно реализовать общий доступ к общему листу и обмениваться ими, что обеспечит возможность сохранения изображения, но это неправда дублирование. Сохранение изображения помещает его в конец всех фотографий. Если я создам новый актив, обеспечивающий изображение из моего существующего актива через creationRequestForAssetFromImage, это тоже будет помещено в конец всех фотографий.

Как можно программно дублировать заданный PHAsset, сохраняя свое местоположение в иерархии альбомов фотографий?

+0

Я не совсем уверен, что ваш запрос, но PHAsset, соответствует NSCopying, если все, что вы хотите сделать, это сделать копию? – DBoyer

+0

@DBoyer Это может быть полезно! Как только у вас есть этот скопированный PHAsset, как вы его сохраните в своей библиотеке фотографий? – Joey

ответ

0

https://developer.apple.com/library/ios/documentation/Photos/Reference/PHAssetChangeRequest_Class/index.html#//apple_ref/doc/uid/TP40014384-CH1-SW8 От

Чтобы установить свойства метаданных вновь созданного актива, используйте соответствующие свойства запроса на изменение (перечисленных в Изменение активов). Чтобы ссылаться на вновь созданный актив позже в том же изменении или после завершения блока изменений, используйте свойство placeplaceForCreatedAsset для извлечения объекта-заполнителя.

Вызов creationRequestForAssetFromImage затем установите соответствующие мета-данные на PHAssetChangeRequest с помощью PHAsset вы хотите скопировать.

let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image) 
request.creationDate = copiedAsset.creationDate 
request.location = copiedAsset.location 
+1

Исправьте меня, если я ошибаюсь, но это просто сохранит фотографию в Camera Roll/All Photos. Он не будет находиться в альбоме, в котором был исходный актив, не так ли? Обратите внимание, что это может быть даже в альбоме, который находится в папке внутри другой папки, и мне действительно нужно сохранить эту копию в том же месте. – Joey