Swift iTunes/Apple音乐持久ID

Swift iTunes/Apple音乐持久ID,swift,Swift,我正在将Python程序转换为macOS应用程序,现在我可以使用ITunesLibrary框架直接阅读苹果音乐库。我正在用python阅读导出的XML库,并将所有音乐键入persistentID属性,我仍然希望这样做。但是,我需要转换的数据文件将persistentID存储为字符串类型的值,因为iTunes/Apple Music就是这样导出XML文件的。ITunesLibrary框架将persistentID作为NSNumber类型值检索 我做了一些挖掘,看看两者之间是否存在转换方法,这样我就

我正在将Python程序转换为macOS应用程序,现在我可以使用ITunesLibrary框架直接阅读苹果音乐库。我正在用python阅读导出的XML库,并将所有音乐键入persistentID属性,我仍然希望这样做。但是,我需要转换的数据文件将persistentID存储为字符串类型的值,因为iTunes/Apple Music就是这样导出XML文件的。ITunesLibrary框架将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)")
//下面的两个persistID用于同一首歌曲。

var XMLPID=“7C9C79C87E3BEE04”//它们是相同的数字,有两种表示形式。第一个是十六进制(基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

可能重复使用Int64而不是Int会更好吗?我试过这个号码,但不起作用。Int和Int64的结果相同,并且在转换时与ITLPID匹配。现在有一些附带代码,我将继续删除下面的答案。但是UInt64和NSNumber不兼容。我试图将Hex16转换为NSNumber,以便与ITL框架返回的内容进行直接比较。Uint64和NSNumber不可比较。为了比较两个as NSNumber,我添加了以下声明:
var convertedPID1=convertedPID as!NSNumber
。这允许直接比较。