Чтобы узнать фактическое последнее местоположение библиотеки iTunes (и не надеяться, что она будет в расположении по умолчанию), прочитайте свойство iTunesRecentDatabases
или iTunesRecentDatabasePaths
из ~/Library/Preferences/com.apple.iApps.plist
.
NSArray *libraryDatabases = [[[NSUserDefaults standardUserDefaults] persistentDomainForName:@"com.apple.iApps"] objectForKey:@"iTunesRecentDatabases"];
NSURL *libraryURL = (([libraryDatabases count])) ? [NSURL URLWithString:[dbs objectAtIndex:0]] : nil;
* 1006.* Для более продвинутого фрагмента кода ищите
parserInstancesForMediaType:
в
iMedia *
IMBiTunesParser.m
Для фактического анализа базы данных рекомендуется использоватьсинтаксический анализатор SAX, такой как NSXMLParser
(по сравнению с синтаксическим анализатором дерева, например NSXMLDocument
или, что еще хуже: NSPropertylistSerialization
), поскольку у некоторых пользователей есть библиотеки, содержащие до, а иногда и более 100 000 треков.Использование синтаксического анализа дерева или даже сериализации серьезно замедлит работу и может временно заблокировать ваше приложение.