我正在尝试将数据保存在iOS / Swift3中的图像元数据中。似乎CG不会让你保存自定义标签(这是真的吗?)所以我JSON编码我的字典并将结果作为字符串放入TIFF标签的ImageDescription中。当我加载图像并获取元数据时......
if let data = NSData(contentsOfFile:oneURL.path), let imgSrc = CGImageSourceCreateWithData(data, options as CFDictionary) {
let allmeta = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options as CFDictionary) as? [String : AnyObject]
allMeta
包含(除此之外):
▿ 0 : 2 elements
- key : ImageDescription
- value : {
"CameraOrientationW" : 0.1061191,
"CameraOrientationZ" : -0.01305595,
"CameraOrientationX" : 0.01319851,
"CameraOrientationY" : 0.9941801
}
哪个有JSON数据,是的!所以现在我只需要获取TIFF元数据,从中获取ImageDescription,然后将其解析为...
let tiffmeta = allmeta?["{TIFF}"]
if let tiffMeta = tiffmeta {
let descmeta = tiffMeta["ImageDescription"]
var descdata = descmeta?.data(usingEncoding: NSUTF8StringEncoding)!
let descdict = try? JSONSerialization.jsonObject(with: descdata, options: [])
但这不会编译。 Xcode在let descdata
行上输入错误:
Value of type 'MDLMaterialProperty??' has no member 'data'
我尝试将它投射到上面一行的String
,此时它抱怨我没有打开可选的MDLMaterialProperty。
我错过了一些明显的东西吗?
答案 0 :(得分:0)
所以只是关闭这个,这似乎是编译器中的一个问题。我对语法做了一些小的改动,没有任何对代码产生实际影响的东西,突然之间它确定对象确实是一个字符串。