2016-08-12 7 views
0

У меня есть следующий код, который превращает CGImage в NSData:CGImageDestinationCreateWithData константа в прошивкой

import Foundation 
import CoreGraphics 
import ImageIO 
// ... snip ... 
    let data = NSMutableData() 
    if let dest = CGImageDestinationCreateWithData(data, kUTTypePNG, 1, nil), let image = self.backgroundImage { 
     CGImageDestinationAddImage(dest, image, nil) 
     if CGImageDestinationFinalize(dest) { 
      return data as Data 
     } 
    } 
    return nil 

Код отлично компилируется в Mac-OS, но kUTTypePNG не определена в прошивке. Фактическое значение константы - "public.png", и, очевидно, замена константы на это значение позволяет iOS компилировать код в порядке.

Но, избегая магических строк/чисел, мы используем константы в первую очередь - есть ли альтернативная константа в Swift-iOS?

ответ

3

С Mobile Core Services Framework в "IOS Обзор технологии":

Рамки Core Services Mobile (MobileCoreServices.framework) определяет типы низкого уровня, используемых в равномерных идентификаторов типа (ИМП).

Для получения дополнительной информации о типах, определенных этой структурой, см. Uniform Type Identifiers Reference.

Так

import MobileCoreServices 

делает

public let kUTTypePNG: CFString 

и другие константы ИМП доступны для вашего кода.