gpt4 book ai didi

swift - CFDictionary 获取 Swift3 中键的值

转载 作者:搜寻专家 更新时间:2023-11-01 06:34:43 24 4
gpt4 key购买 nike

我在访问 CFDictionary 中的特定(或任何)键时遇到问题。老实说,我并没有真正理解在 Swift 中执行此操作所需的方法,而且我认为它过于复杂...

我的代码:

if let session = DASessionCreate(kCFAllocatorDefault) {
let mountedVolumes = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: [], options: [])!
for volume in mountedVolumes {
if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volume as CFURL) {
let diskinfo = DADiskCopyDescription(disk);

var volumeValue = CFDictionaryGetValue(diskinfo, <#T##key: UnsafeRawPointer!##UnsafeRawPointer!#>)


}
}

我想要实现的目标:将键或字段 DAVolumeNetwork 的值获取到变量 volumeValue 中。我想我需要将 kDADiskDescriptionVolumeNetworkKey 传递给 CFDictionaryGetValue 方法?我如何实现这一目标?

最佳答案

不要在 Swift 中使用 CFDictionary。 (这是可能的,但不值得付出努力,请参见下文。)

  • CFDictionary 是免费的与 NSDictionary 桥接,后者又可以转换为 Swift Dictionary
  • kDADiskDescriptionVolumeNetworkKey 键的值是CFBoolean 可以转换为 Swift Bool

例子:

if let session = DASessionCreate(kCFAllocatorDefault),
let mountedVolumes = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: []) {
for volume in mountedVolumes {
if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volume as CFURL),
let diskinfo = DADiskCopyDescription(disk) as? [NSString: Any] {

if let networkValue = diskinfo[kDADiskDescriptionVolumeNetworkKey] as? Bool {
print(networkValue)
}
}
}
}

只是为了完整性:这是必要的指针杂耍在 Swift 3 中调用 CFDictionaryGetValue:

if let session = DASessionCreate(kCFAllocatorDefault),
let mountedVolumes = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: []) {
for volume in mountedVolumes {
if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volume as CFURL),
let diskinfo = DADiskCopyDescription(disk) {

if let ptr = CFDictionaryGetValue(diskinfo, Unmanaged.passUnretained(kDADiskDescriptionVolumeNetworkKey).toOpaque()) {
let networkValue = Unmanaged<NSNumber>.fromOpaque(ptr).takeUnretainedValue()
print(networkValue.boolValue)
}
}
}
}

关于swift - CFDictionary 获取 Swift3 中键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42786613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com