PHAsset, das von fetchAssetsWithALAssetURLs zurückgegeben wird: ist immer null, wenn ein Foto aus dem Album "My Photo Stream" mit UIImagePickerController ausgewählt wird

9

Ich verwende UIImagePickerController , damit der Nutzer ein Foto oder Video für die Freigabe in der App auswählen kann. Wenn der Benutzer ein Medienelement in seiner Bibliothek auswählt, führe ich diesen Code in einer der UIImagePickerController's -Delegatenmethoden aus:

%Vor%

Beide if statements funktionieren sowohl für Foto als auch für Video einwandfrei, außer wenn Sie ein Element aus dem Album "My Photo Stream" auswählen.

Wenn Sie ein Objekt aus "My Photo Stream" auswählen, ist das zurückgegebene PHAsset immer nil .

Ich habe die folgende Frage gefunden, die eine Antwort mit einer funktionierenden Lösung zu haben scheint: ALAssetsLibrary assetForURL: gibt immer nil für Fotos in" Mein Fotostream "in iOS 8.1

zurück

Aber der obige Link verwendet das AssetsLibrary -Framework, das von Apple nicht mehr empfohlen wird:

  

"Verwenden Sie in iOS 8.0 und höher das Photos-Framework anstelle der Assets   Bibliotheks-Framework Das Photos-Framework bietet mehr Funktionen und   bessere Leistung für die Arbeit mit der Fotobibliothek eines Benutzers. Siehe Fotos   Framework-Referenz. "

Ich muss PHAsset -Objekte für die Medienelemente im Album "My Photo Stream" zurückgeben können. Derzeit ist die Referenz-URL, die von UIImagePickerController im info -Wörterbuch zurückgegeben wird, eine gültige URL, die sich in der Konsole anmeldet, aber bei Verwendung dieser URL wird niemals ein gültiges PHAsset -Objekt zurückgegeben.

Hier ist ein Beispiel für eine Referenz-URL, die im Infowörterbuch der didFinishPickingMediaWithInfo: -Delegatenmethode zurückgegeben wird:

%Vor%     
user3344977 16.12.2014, 03:07
quelle

2 Antworten

1

Es ist ein Bug und scheint in den neuesten iOS 8.2x Betas behoben zu sein.

    
holtmann 13.02.2015 12:27
quelle
1

Es ist unglaublich, aber ab iOS 10.3.3 bleibt der Fehler bestehen und es sieht so aus, als ob er nur von iOS 11 behoben wurde ...

Um iOS 10 und darunter abzudecken, verwende ich fetchAssets von PHAsset mit dem von didFinishPickingMediaWithInfo delegate method:

zurückgegebenen Infowörterbuch %Vor%

Denken Sie daran, dass dies ein Array von Ergebnissen zurückgibt.

    
scaryguy 23.10.2017 14:47
quelle