Я использую UIImagePickerController в двух случаяхКак получить URL изображения добавленного в PHPhotoLibrary
- выбрать существующее изображение в библиотеке фотографий
- принять новую картину
в первом случае, когда я выбираю изображение формирует библиотеку, я могу легко получить URL в методе делегата:
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Get the URL
NSURL *url = [info valueForKey:UIImagePickerControllerReferenceURL];
...
}
Но когда я беру новое изображение, изображение еще не находится в библиотеке фотографий и еще не имеет URL. Поэтому мне сначала нужно добавить изображение в библиотеку. Но тогда, как получить URL-адрес нового актива?
Вот мой код, чтобы добавить изображение в библиотеке фотографий
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Get the image
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// Add the image in the library
[[PHPhotoLibrary sharedPhotoLibrary]
performChanges:^
{
// Request creating an asset from the image.
PHAssetChangeRequest *createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
// Get the URL of the new asset here ?
...
}
completionHandler:^(BOOL success, NSError *error)
{
if (!success) { ...; return; }
// Get the URL of the new asset here ?
...
}
];
}
Это работает, но чувствует себя очень страшно, я не знаю, произойдет ли это на самом деле, но такой подход может привести к состоянию гонки. –
какой гонки состояние? я не был бы уверен, что localIdentifier доступен еще –
привет, пожалуйста, скажите, что будет self.assetCollection здесь, какой класс, спасибо –