Я просто разбирался в Swift, а потом появился Swift 1.2 (нарушающий мой рабочий код)!
У меня есть функция, основанная на примере кода из NSHipster — CGImageSourceCreateThumbnailAtIndex.
Мой ранее работающий код:
import ImageIO
func processImage(jpgImagePath: String, thumbSize: CGSize) {
if let path = NSBundle.mainBundle().pathForResource(jpgImagePath, ofType: "") {
if let imageURL = NSURL(fileURLWithPath: path) {
if let imageSource = CGImageSourceCreateWithURL(imageURL, nil) {
let maxSize = max(thumbSize.width, thumbSize.height) / 2.0
let options = [
kCGImageSourceThumbnailMaxPixelSize: maxSize,
kCGImageSourceCreateThumbnailFromImageIfAbsent: true
]
let scaledImage = UIImage(CGImage: CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options))
// do other stuff
}
}
}
}
Начиная с Swift 1.2, компилятор выдает две ошибки, связанные со словарем options
:
- Тип выражения неоднозначен без дополнительного контекста
- '_' нельзя преобразовать в 'BooleanLiteralConvertible' (в ссылке на значение "true")
Я пробовал разные способы специально объявлять типы в словаре параметров (например, [String : Any]
, [CFString : Any]
, [Any : Any]
). Хотя это может решить одну ошибку, они вносят другие ошибки.
Кто-нибудь может просветить меня?? Что еще более важно, может ли кто-нибудь объяснить, что изменилось в Swift 1.2 и словарях, которые помешали этому работать.