Как правильно получить пользовательский альбом из PHAssetCollection - PullRequest
0 голосов
/ 25 июня 2018

Я создал собственный альбом и сейчас пытаюсь загрузить видео с FTP-сайта и переместить его в пользовательский альбом.

Я использую Visual Studio 2017 Xamarin C # ios 11.4.
Права доступа установлены в Info.plist. Перед этим блоком я тестирую, чтобы убедиться, что пользователь авторизован для доступа к библиотеке фотографий.

Я впервые использую PHPhotoLibrary и не могу найти много примеров кода C #,

Ошибка не генерируется, просто происходит сбой в начале строки PHFetchReult fetchResult.

ОБНОВЛЕНО Обнаружено это в журнале на моем iPad.

Дата / Время: 2018-06-25 18:05:54 -0400 Версия ОС: iPhone OS 11.4.1 (сборка 15G5072a) Архитектура: arm64 Версия отчета: 26

Источник данных:KPerf Облегченный кэш ядра PET: 0xffffffe000000000 07AF39CA-659D-3636-4A4A-FE05631AA416 Причина: UIKit-runloop-AppStore: время ожидания 816 мс

Команда: Путь к AppStore: /Applications/AppStore.app/AppStore.app/App:.AppStore Версия: 3.0 (1) Родитель: launchd [1] PID: 4415

Продолжительность: 0,80 с Шаги: 16 (интервал выборки 50 мс)

Модель оборудования: J71AP Активный процессор: 2

private PHAssetCollection FindAlbum(string title)
{
    PHAssetCollection photoAlbum = null;

    var fetchOptions = new PHFetchOptions() { Predicate = 
        NSPredicate.FromFormat(string.Format("title={0}", title)) };
    PHFetchResult fetchResult = PHAssetCollection.FetchAssetCollections(PHAssetCollectionType.Album, PHAssetCollectionSubtype.Any, options: fetchOptions); 

    if (fetchResult.firstObject != null)
    {
        photoAlbum = (PHAssetCollection)fetchResult.firstObject;
    }
    return photoAlbum;
}

1 Ответ

0 голосов
/ 26 июня 2018

Я выяснил, что происходит и как ее решить, хотя я не до конца понимаю, почему объект не возвращает ноль, а вместо этого вылетает, возможно, это ошибка.

В концепроблема заключалась в том, что предикат не прошел должным образом.Я также спарил в поиске, чтобы включить подтип только RegularAlbums, так как я специально искал собственный альбом.

Надеюсь, это поможет кому-то еще в мире C #:

   private PHAssetCollection FindAlbum(string title)
    {
        PHAssetCollection photoAlbum = null;
        var arguments = new NSObject[] { NSObject.FromObject( title) };
        var fetchOptions = new PHFetchOptions() { Predicate = NSPredicate.FromFormat("title=%@", arguments) };

        PHFetchResult fetchResult = PHAssetCollection.FetchAssetCollections(PHAssetCollectionType.Album, PHAssetCollectionSubtype.AlbumRegular, fetchOptions);

        if (fetchResult.firstObject != null)
        {
            photoAlbum = (PHAssetCollection)fetchResult.firstObject;

        }
        return photoAlbum;
    }
...