swift - How to create a matrix of CAShapeLayers? -


i have code:

var triangles: [[[cashapelayer]]] = array(repeating: array(repeating: array(repeating: 0, count: 2), count: 15), count: 15); 

but generates "cannot convert value of type..." compilation error.

how can solve that? want access cashapelayers this:

triangles[1][2][1].fillcolor = uicolor(red: 40/255, green: 73/255, blue: 80/255, alpha: 1).cgcolor; 

use optionals.

var triangles: [[[cashapelayer?]]] = array(repeating: array(repeating: array(repeating: nil, count: 2), count: 15), count: 15) 

now there's nil instead of 0, think hinting at. every triangles[x][y][z] optional type you'll have safely unwrap.

so have triangles[x][y][z] = cashapelayer() before object.

edit correction. @ooper


i thought more, , realized didn't really answer question.

so may use loops initialize (which pain), or every time access index:

if triangles[x][y][z] == nil {     triangles[x][y][z] = cashapelayer() } let bloop = triangles[x][y][z]! bloop.fillcolor = uicolor(... 

then pull out outside method becomes 1 liner. like:

func tri(at x: int, _ y: int, _ z: int) -> cashapelayer {     if triangles[x][y][z] == nil     {         triangles[x][y][z] = cashapelayer()     }     return triangles[x][y][z]! } 

then when using it:

tri(at: 1, 2, 1).fillcolor = ... 

of course, should pull triangles out , make property of class you're in, or can include in parameter list of 1 liner method.


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -