使用 swift 4 检索 NSDictionary 值

Retrieve NSDictionary Value with swift 4

我尝试从图片中检索 exif 数据。 我可以将其加载到词典中,但我无法使用该词典。

我的当前代码是:

import Cocoa
import ImageIO

let path = "/Volumes/Olivier/Original/Paysage/affoux/_OPI7684.NEF"
let UrlPath = URL(fileURLWithPath: path)

UrlPath.isFileURL
UrlPath.pathExtension
UrlPath.hasDirectoryPath


let imageSource = CGImageSourceCreateWithURL(UrlPath as CFURL, nil)
let imageProp = CGImageSourceCopyPropertiesAtIndex(imageSource!, 0, nil)
var key = "kCGImagePropertyWidth" as NSString

let h :NSDictionary = CFDictionaryGetValue(imageProp, kCGImagePropertyWidth)

最后一行根本不起作用。 任何解决方案? 谢谢

问题是你的键名不对。你是说 kCGImagePropertyPixelWidth。它不是一个字符串。这是一个常数。所以它不应该在引号中;直接用常量就行了,不用管它的值是多少

我还建议您在此过程的早期转换为 Swift 字典。以下是您可以模仿的实际工作代码:

let src = CGImageSourceCreateWithURL(url as CFURL, nil)!
let result = CGImageSourceCopyPropertiesAtIndex(src, 0, nil)!
let d = result as! [AnyHashable:Any]
let width = d[kCGImagePropertyPixelWidth] as! CGFloat
let height = d[kCGImagePropertyPixelHeight] as! CGFloat

当然,该代码非常糟糕,因为每一行都包含一个感叹号(表示 "crash me"),但在现实生活中我不会崩溃,所以我允许它站立。