【发布时间】:2020-07-22 22:29:17
【问题描述】:
我尝试使用此示例代码访问 Exif 数据:
let fileextension = NSURL(fileURLWithPath: mDir + "/" + f).pathExtension
if fileextension == "PSD" || fileextension == "NEF" || fileextension == "3FR" || fileextension == "CR2" || fileextension == "DNG" || fileextension == "JPEG" || fileextension == "JPG" || fileextension == "PSB" || fileextension == "RAF" || fileextension == "TIF" {
let fileattr = try fileManager.attributesOfItem(atPath: mDir + "/" + f)
let filesize = fileattr[FileAttributeKey.size] as! Int64
let UrlPath = URL(fileURLWithPath: mDir + "/" + f)
let imageSource = CGImageSourceCreateWithURL(UrlPath as CFURL, nil)
let result = CGImageSourceCopyMetadataAtIndex(imageSource!, 0, nil)
let d = result as! [AnyHashable:Any]
let tiffDict = d["{TIFF}"] as! [AnyHashable:Any]
let filedate = tiffDict["DateTime"] as! Date
我有这个错误:
无法将“__NSCFType”(0x7fff89750188) 类型的值转换为 'NSDictionary' (0x7fff89750fe8)。
但是这个示例代码在操场上工作。
有什么解释吗?
【问题讨论】:
-
CGImageSourceCopyMetadataAtIndex返回CGImageMetadata,它不能转换为字典。 -
然后呢?为什么它在操场上工作?
-
我在 Playground 中运行代码时出现同样的错误