Как получить доступ к фотографиям в приложении «Фотографии» на macOS

Я пытаюсь получить доступ к фотографиям, хранящимся в приложении MacOS Photos, и иметь этот код в классе ViewController.

import Cocoa
import Photos

class vcSecond: NSViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
    let identifiers = PHPhotoLibrary.localIdentifiers(PHPhotoLibrary())
    let assets = PHAsset.fetchAssets(withLocalIdentifiers: identifiers, options: fetchOptions)
    print(assets.count)
}
}

и я изо всех сил пытался получить метод localIdentifiers для fetchAssets. XCode выдает ошибку «Невозможно преобразовать значение типа» ([PHCloudIdentifier]) -> [String]» в ожидаемый тип аргумента «[String]»». Существует множество примеров кода для iOS, но гораздо меньше для macOS. Кто-нибудь готов поделиться некоторыми кодами и / или дать какие-либо подсказки? Спасибо.


person Dawy    schedule 27.12.2018    source источник


Ответы (1)


Что ж, если все, что вы пытаетесь сделать, это получить доступ к фотографиям, то, чтобы открыть приложение «Фото», просто добавьте этот фрагмент кода в свой контроллер.

override func viewDidLoad() {
    super.viewDidLoad()

    NSWorkspace.shared.open(URL(fileURLWithPath: "/Applications/Photos.app"))
}

Также см. эту тему: Как получить все PHAssets из MacOS Photo Библиотека

person Arie Pinto    schedule 27.12.2018
comment
Спасибо. Ваше предложение использовать NSWorkspace работает нормально, но моя первоначальная цель состояла в том, чтобы открыть выбранные фотографии в моем собственном приложении. Если я правильно понял, это возможно только через расширение приложения «Фотографии», верно? Или я мог бы хранить фотографии в папке с файлами, а затем получать к ним доступ из приложения. Но я хотел бы пропустить этот дополнительный шаг. - person Dawy; 27.12.2018
comment
Не уверен, но из того, что я понял из приложенной ссылки, это невозможно. - person Arie Pinto; 27.12.2018