无法在 Swift playground 中枚举 MP3 标签
Unable to enumerate MP3 tags in a Swift playground
我试图在 Xcode 游乐场(使用 Swift)中枚举 MP3 文件中的 ID3 标签,但我得到的只是一个空数组。我也尝试了 'nil' 选项(出于绝望,我也尝试了下面的选项):
import Cocoa
import AVFoundation
var url = NSURL(fileURLWithPath: "/Users/marc/test.mp3")
let opts = [ AVURLAssetPreferPreciseDurationAndTimingKey: true ]
var asset = AVURLAsset(URL: url, options: opts)
var metaData = asset.commonMetadata
for item in metaData {
print("key: \(item.commonKey), value: \(item.stringValue)")
}
我是不是做错了什么,还有其他人可以让它工作吗?
游乐场是沙盒化的。您无法读取或写入文件系统。
但是您可以阅读在 Playground 中的文件。
打开项目导航器:
View > Navigators > Show Project Navigator
并且 将您的 MP3 放入 Resources
文件夹。
一旦它在那里,将文件从导航器中拖到源代码区域:它会生成一个代表文件的图标URL。
然后您可以将您的代码用于此文件:
let url = (the file icon dragged from the project navigator)
let asset = AVURLAsset(URL: url, options: nil)
let metaData = asset.commonMetadata
for item in metaData {
if let key = item.commonKey, let value = item.stringValue {
print("key: \(key), value: \(value)")
}
}
截图:
我试图在 Xcode 游乐场(使用 Swift)中枚举 MP3 文件中的 ID3 标签,但我得到的只是一个空数组。我也尝试了 'nil' 选项(出于绝望,我也尝试了下面的选项):
import Cocoa
import AVFoundation
var url = NSURL(fileURLWithPath: "/Users/marc/test.mp3")
let opts = [ AVURLAssetPreferPreciseDurationAndTimingKey: true ]
var asset = AVURLAsset(URL: url, options: opts)
var metaData = asset.commonMetadata
for item in metaData {
print("key: \(item.commonKey), value: \(item.stringValue)")
}
我是不是做错了什么,还有其他人可以让它工作吗?
游乐场是沙盒化的。您无法读取或写入文件系统。
但是您可以阅读在 Playground 中的文件。
打开项目导航器:
View > Navigators > Show Project Navigator
并且 将您的 MP3 放入 Resources
文件夹。
一旦它在那里,将文件从导航器中拖到源代码区域:它会生成一个代表文件的图标URL。
然后您可以将您的代码用于此文件:
let url = (the file icon dragged from the project navigator)
let asset = AVURLAsset(URL: url, options: nil)
let metaData = asset.commonMetadata
for item in metaData {
if let key = item.commonKey, let value = item.stringValue {
print("key: \(key), value: \(value)")
}
}
截图: