Получить значение NSDictionary с быстрым 4 - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь получить 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)

Последняя строка вообще не работает.Любое решение?Спасибо в

1 Ответ

0 голосов
/ 24 мая 2018

Проблема в том, что ваше ключевое имя неверно.Вы имеете в виду 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

Конечно, этот код довольно плохой, потому что каждая строка содержит восклицательный знак (что означает «сбить меня»), но в реальной жизни яне врезаться, поэтому я позволил ему стоять.

...