Ich möchte alle Fotos von allen lokalen Alben auf dem Gerät abrufen. Grundsätzlich alle Fotos, die auf dem Gerät sind Wird die Liste der lokalen IDs eindeutig sein? Was ist der beste Ansatz dafür mit dem Fotorahmen?
Meine Frage ist nicht doppelt, da die andere Frage auch Cloud-Assets und Assets betrifft, die sich nicht auf dem Gerät befinden. Beim Abrufen der tatsächlichen Daten des Bildes werden beim Versuch, die Synchronisierung abzurufen, Nulldaten zurückgegeben.
Ich möchte alle Fotos von allen lokalen Alben auf der Gerät. Grundsätzlich alle Fotos, die auf dem Gerät sind
Bearbeiten: fetchOptions.includeAssetSourceTypes = .typeUserLibrary siehe folgenden Code
So mache ich es:
%Vor% Wenn ich es dann als UImage oder als Thumbnail verwenden möchte (auch wenn Sie das Bild als Daten verwenden wollen, verwenden Sie let imageData: NSData = UIImagePNGRepresentation(myImage)
), verwende ich:
Sie werden wahrscheinlich den obigen Code anpassen oder weitere Funktionen hinzufügen, die auf Ihre Bedürfnisse zugeschnitten sind!
Der obige Code wurde geschrieben und getestet mit Swift 3.1 und Xcode 8.3.1
Laut Apple's Docs
isNetworkAccessAllowed Ein boolescher Wert, der angibt, ob Fotos das angeforderte Bild von iCloud herunterladen können. Wenn dies der Fall ist und das angeforderte Bild nicht auf dem lokalen Gerät gespeichert ist, lädt Photos das Bild von iCloud herunter. Um über den Fortschritt des Downloads informiert zu werden, verwenden Sie die Eigenschaft progressHandler, um einen Block bereitzustellen, den Photos regelmäßig beim Herunterladen des Bildes aufruft. Wenn false (Standard) und das Image nicht auf dem lokalen Gerät vorhanden ist, zeigt der PHImageResultIsInCloudKey-Wert im Info-Wörterbuch des Ergebnishandlers an, dass das Image nur verfügbar ist, wenn Sie den Netzwerkzugriff aktivieren.
Verwenden Sie die getAsset () -Methode zum Abrufen des Bildes aus dem Asset. Es funktioniert
Schritt 1.
Betten Sie Photos.framework in Ihr Projekt ein
Schritt 2
%Vor%Schritt 3
Fügen Sie den NSPhotoLibraryUsageDescription-Schlüssel zu plist
hinzu %Vor%Schritt 4
Schreiben Sie diesen Code, um PHFetchResult
zu erhalten %Vor%