iTunes / Apple Musi c Постоянный идентификатор - PullRequest
0 голосов
/ 18 июня 2020

Я нахожусь в процессе преобразования программы Python в приложение macOS, и теперь я могу читать библиотеку Apple Musi c напрямую, используя ITunesLibrary Framework. Я читал экспортированную библиотеку XML в python и привязал все свои файлы c к свойству persistentID, что я все еще хочу сделать. Однако мой файл данных, который необходимо преобразовать, имеет persistentID, хранящийся в виде значения строкового типа, потому что именно так iTunes / Apple Musi c экспортирует файл XML. ITunesLibrary Framework извлекает persistentID как значение типа NSNumber.

Я немного покопался, чтобы увидеть, существует ли метод преобразования между ними, поэтому я могу запустить сценарий в моем файле данных и преобразовать всю строку persistentID типы в типы NSNumber. То, что я нашел, не работает. Он возвращает ноль.

// The two below persistID's are for the same song.
var XMLPID = "7C9C79C87E3BEE04" // <--- persistentID from the XML file
var ITLPID:NSNumber = 8979185659088203268 // <--- persistentID from the ITL Framework

// I found this in another discussion here:
let convertedPID = NumberFormatter().number(from: XMLPID)
print("XML PID = \(XMLPID)")
print("Converted PID = \(convertedPID)")

Благодарю за любую помощь в получении этой работы.

1 Ответ

1 голос
/ 18 июня 2020

Это одно и то же число в двух представлениях. Первый - шестнадцатеричный (основание 16). Второй - десятичный (основание 10). Swift обеспечивает легкое преобразование.

let hex = "7C9C79C87E3BEE04"
let num = 8979185659088203268 as NSNumber
let swiftnum = num.uint64Value
UInt64(hex, radix:16) == swiftnum // true
String(swiftnum, radix:16, uppercase:true) == hex // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...