我有以下代码将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中是否存在替代常量?
答案 0 :(得分:3)
来自“iOS技术概述”中的Mobile Core Services Framework:
移动核心服务框架(MobileCoreServices.framework)定义了统一类型标识符(UTI)中使用的低级类型。
有关此框架定义的类型的更多信息,请参阅Uniform Type Identifiers Reference。
所以
import MobileCoreServices
品牌
public let kUTTypePNG: CFString
以及您的代码可用的其他UTI常量。