iOS

时间:2016-08-12 11:05:40

标签: ios swift core-graphics core-image

我有以下代码将CGImage转换为NSData

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中编译良好,但在iOS中未定义kUTTypePNG。常量的实际值是"public.png",显然,用该值替换常量允许iOS编译代码。

但是避免魔术字符串/数字是我们首先使用常量的原因 - 在Swift-iOS中是否存在替代常量?

1 个答案:

答案 0 :(得分:3)

来自“iOS技术概述”中的Mobile Core Services Framework

  

移动核心服务框架(MobileCoreServices.framework)定义了统一类型标识符(UTI)中使用的低级类型。

     

有关此框架定义的类型的更多信息,请参阅Uniform Type Identifiers Reference

所以

import MobileCoreServices

品牌

public let kUTTypePNG: CFString

以及您的代码可用的其他UTI常量。