2015-12-09 4 views
-1

Ошибка заключается в том, что nil не является вариантом, но что еще я мог бы поставить?Почему возникает ошибка?

import UIKit 
import Metal 
import QuartzCore 

class ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    var device: MTLDevice! = nil 
    device = MTLCreateSystemDefaultDevice() 
    var metalLayer: CAMetalLayer! = nil 
    metalLayer = CAMetalLayer() 
    metalLayer.device = device 
    metalLayer.pixelFormat = .BGRA8Unorm 
    metalLayer.framebufferOnly = true 
    metalLayer.frame = view.layer.frame 
    view.layer.addSublayer(metalLayer) 

    let vertexData:[Float] = [ 
     0.0, 1.0, 0.0, 
     -1.0, -1.0,0.0, 
     1.0, 1.0, 0.0 
    ] 

    var vertexBuffer: MTLBuffer! = nil 
    let dataSize = vertexData.count * sizeofValue(vertexData[0]) 
    vertexBuffer = device.newBufferWithBytes(vertexData, length: dataSize, options: nil) 
} 
+2

Было бы неплохо получить номер строки. – aafc

+0

Где ошибка? – LinusGeffarth

ответ

4

Вы должны положить [], если у вас нет options: на поставку.

0

Если вы объявите переменную с необязательным типом, вам не нужно ее инициализировать. Однако, если вы хотите, чтобы эта переменная была необязательной, вам нужно объявить ее как let metalLayer: CAMetalLayer?, а затем вы можете установить ее равной нулю.

Смежные вопросы