2016-08-12 1 views
0

j'ai le code suivant qui transforme un CGImage en NSData:constantes CGImageDestinationCreateWithData dans iOS

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 

Le code compile bien sous Mac OS, mais kUTTypePNG est non défini dans iOS. La valeur réelle de la constante est "public.png", et évidemment, en remplaçant la constante par cette valeur, iOS peut compiler le code correctement. Mais éviter les chaînes/nombres magiques est la raison pour laquelle nous utilisons des constantes en premier lieu - Y a-t-il une constante alternative dans Swift-iOS?

Répondre

3

De Mobile Core Services Framework dans la "iOS Présentation de la technologie":

Le cadre des services de base mobile (MobileCoreServices.framework) définit les types de bas niveau utilisés dans les identificateurs de type uniforme (IVU). Pour plus d'informations sur les types définis par cette infrastructure, voir Uniform Type Identifiers Reference.

Alors

import MobileCoreServices 

fait

public let kUTTypePNG: CFString 

et d'autres constantes de UTI disponibles à votre code.