我希望找到已连接驱动器的标识符,就像在终端命令diskutil list
中看到的那样。
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS SSHD OSX 511.7 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
4: Apple_HFS SSHD OSX NEW 511.0 GB disk0s4
5: Apple_Boot Recovery HD 650.0 MB disk0s5
到目前为止,我已经写出了下面的代码:
var volume_stack = [NSURL]()
volume_stack = NSFileManager.defaultManager().mountedVolumeURLsIncludingResourceValuesForKeys([NSURLVolumeNameKey, NSURLVolumeIdentifierKey], options: [])!
for disk: NSURL in volume_stack {
do {
var info: Dictionary = [String : AnyObject]()
info = try disk.resourceValuesForKeys([NSURLVolumeIdentifierKey])
for (key, value) in info {
var s_value = String(data: value as! NSData, encoding: NSUTF8StringEncoding)
print("key: \(key) value: \(s_value)")
}
}
catch {
print ("ERROR")
}
}
但是输出结果为:
key: NSURLVolumeIdentifierKey value: Optional("gEd\0\0\0\0\0")
key: NSURLVolumeIdentifierKey value: nil
key: NSURLVolumeIdentifierKey value: nil
key: NSURLVolumeIdentifierKey value: Optional("sHg\0\0\0\0\0")
将ivar s_value
替换为value
后的日志如下:
key: NSURLVolumeIdentifierKey value: <67456400 00000000>
key: NSURLVolumeIdentifierKey value: <c6236500 00000000>
key: NSURLVolumeIdentifierKey value: <69986600 00000000>
key: NSURLVolumeIdentifierKey value: <73486700 00000000>
根据我的了解,这里使用的是NSData
。抱歉代码写得不好,因为这是我写的第一个Swift应用程序,我一直在徘徊,所以代码有点简单。是否有办法将标识符列中列出的内容作为String
获取?