通常,您需要编写如下代码:
if someOptional != nil {
// do something with the unwrapped someOptional e.g.
someFunction(someOptional!)
}
Run Code Online (Sandbox Code Playgroud)
这似乎有点冗长,而且我听说使用!强制解包操作符可能是不安全的,最好避免使用.有没有更好的方法来处理这个?
我一直在试图弄清楚如何将一组rgb像素数据转换为Swift中的UIImage.
我将每个像素的rgb数据保存在一个简单的结构中:
public struct PixelData {
var a: Int
var r: Int
var g: Int
var b: Int
}
Run Code Online (Sandbox Code Playgroud)
我已经开始使用以下函数,但生成的图像不正确:
func imageFromARGB32Bitmap(pixels:[PixelData], width: Int, height: Int)-> UIImage {
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo:CGBitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedFirst.rawValue)
let bitsPerComponent:Int = 8
let bitsPerPixel:Int = 32
assert(pixels.count == Int(width * height))
var data = pixels // Copy to mutable []
let providerRef = CGDataProviderCreateWithCFData(
NSData(bytes: &data, length: data.count * sizeof(PixelData))
)
let cgim = CGImageCreate(
width,
height,
bitsPerComponent,
bitsPerPixel,
width * Int(sizeof(PixelData)), …Run Code Online (Sandbox Code Playgroud)