Swift认为我的字符串是MDL材料

时间:2017-03-15 21:35:39

标签: swift3

我正在尝试将数据保存在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。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

所以只是关闭这个,这似乎是编译器中的一个问题。我对语法做了一些小的改动,没有任何对代码产生实际影响的东西,突然之间它确定对象确实是一个字符串。