Я рассматривал возможность добавления доступа к библиотеке iTunes в разрабатываемое мной приложение для Mac.
Я рассмотрел некоторые из существующих реализаций с открытым исходным кодом, такие как EyeTunes и iMedia, но обнаружил, что они не совсем то, что я искал. В общем перебор.
Поэтому я попробовал использовать Scripting Bridge и обнаружил, что, хотя он и работал, он был медленным. А так как мне особо не нужно было управлять iTunes, медлительность того не стоила. У этого также была обратная сторона, полагающаяся на iTunes, чтобы работать. Также немного раздражает то, что он работает в изолированном приложении (хотя это возможно).
Итак, я, наконец, начал создавать свою собственную библиотеку, прочитав файл iTunes Library.xml. Кажется, это работает нормально. Но в процессе исследования значения ключа/значения Distinguished Kind я наткнулся на совершенно новый, Apple предоставила iTunesLibrary.framework !!!
Красиво — документация по платформе iTunesLibrary находится здесь.
Однако, когда я пытаюсь инициализировать фреймворк, используя код, как показано в справочной ссылке:
NSError * error = nil;
ITLibrary* library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
Он возвращает nil и выдает очень полезную ошибку (в моем приложении в песочнице):
Домен ошибки = код NSPOSIXErrorDomain = 100001 «Не удалось загрузить». UserInfo=0x1140025b0 {NSLocalizedDescription=Не удалось загрузить., NSUunderlyingError=0x1026fbe20 "Операция не может быть завершена. (Ошибка OSStatus -50.)"}
Думая, что это может быть проблема с песочницей, я также создал утилиту быстрой командной строки, которая пытается запустить библиотеку и возвращает почти идентичную ошибку:
Не удалось открыть библиотеку: домен ошибки = код NSPOSIXErrorDomain = 100001 «Не удалось загрузить». UserInfo=0x1018015b0 {NSLocalizedDescription=Не удалось загрузить., NSUunderlyingError=0x103a000e0 "Операция не может быть завершена. (Ошибка OSStatus 100005.)"}
Кто-нибудь еще пробовал эту новую структуру библиотеки iTunes с большей удачей, чем я?
// РЕДАКТИРОВАТЬ: Ответ ниже правильный. Требуется подпись кода. Пример кода в ответе — удобная отправная точка для использования фреймворка. Кроме того, в моем случае проблема заключалась в том, что код платформы iTunesLibrary не работает, когда библиотека iTunes размещена на сетевом диске. Сделайте это чем-то вроде нарушения условий сделки, если Apple не исправит это.