Die Media Library Framework ist der Ort zu gehen.
Verbrauch:
@import MediaLibrary;
- (void) awakeFromNib
{
NSDictionary *options = @{
MLMediaLoadSourceTypesKey: @(MLMediaSourceTypeImage),
MLMediaLoadIncludeSourcesKey: @[MLMediaSourcePhotosIdentifier]
};
MLMediaLibrary *mediaLibrary = [[MLMediaLibrary alloc] initWithOptions:options];
self.mediaLibrary = mediaLibrary;
[mediaLibrary addObserver:self
forKeyPath:@"mediaSources"
options:0
context:(__bridge void *)@"mediaLibraryLoaded"];
[mediaLibrary mediaSources]; // returns nil and starts asynchronous loading
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context
{
if (context == (__bridge void *)@"mediaLibraryLoaded") {
// Media Library is loaded now, we can access mediaSources
MLMediaSource *mediaSource = [self.mediaLibrary.mediaSources objectForKey:@"com.apple.Photos"];
}
}
Das Konzept hinter der Bibliothek ist, dass Sie es fordern Sie ein Attribut eines Objekts zu lesen, die eine leere Referenz zurückgibt. Dann abonnieren Sie dieses Attribut mit einem Schlüssel-Wert-Beobachter und Sie warten, bis es geladen ist. Dann können Sie das nächste Kind mit dem gleichen Prinzip abrufen und so weiter ...
https://developer.apple. com/library/mac/dokumentation/MediaLibrary/Referenz/MediaLibraryFrameworkReference/index.html #/apple_ref/doc/uid/TP40012956 – matt
Danke matt! Das macht den Trick! –
Die oben erwähnte Webseite von PhotoKit sagt, dass es auch für "macOS 10.11+" verfügbar ist. – Gabriel