Usando JSON para leer datos de nivel de juego en iOS

Quiero usar JSON para almacenar datos sobre mi juego para leerlos en mi código Objective-C.

Entonces, mi archivo TwinstonesBoardModel.m tiene los siguientes métodos (que son los primeros métodos a los que se debe llamar cuando se inicia el juego para establecer las posiciones de los objetos en el tablero). No sé por qué, pero dividí mis inicializaciones de objetos en varios métodos para mayor claridad.

    // sets the board positions for the stones
    - (void)setToInitialStateMain
    {
        // clear board so each level-load is free of previous data
        [super clearBoard];

        // set the state of two stone objects and their positions
        [super setCellState:BoardCellStateStoneOne forColumn:0 andRow:0];
        [super setCellState:BoardCellStateStoneTwo forColumn:2 andRow:3];
    }

    - (void)setToInitialStateHorizontal
    {
        [super clearBoard];

        [super setHBarCellState:HorizontalState forHBarCol:0 andHBarRow:1];
    }

Y tengo 3 métodos adicionales para usos similares como los anteriores, solo estableciendo posiciones. Lo que quiero hacer es proporcionar 100 niveles de posiciones y estados en un archivo JSON para poder leerlos según la selección de nivel. Entonces, si selecciono el nivel 54, se invocan las funciones anteriores y se aplican las posiciones y estados del nivel 54 del archivo JSON.

Mis estados son:

    typedef NS_ENUM(NSUInteger, BoardCellState) {
        BoardCellStateEmpty = 0,
        BoardCellStateStoneOne = 1,
        BoardCellStateStoneTwo = 2,
        BoardCellStateTarget = 3,
        HorizontalState = 4,
        HorizontalStateEmpty = 5,
        GhostHorizontalState = 6,
        VerticalState = 7,
        VerticalStateEmpty = 8,
        GhostVerticalState = 9,
        IntersectorState = 10
    };

Y estoy tratando con valores posicionales 0-4.

¿Cómo haría para hacer esto? Soy muy nuevo en la lectura de niveles desde un archivo externo. Podría evitar codificar todas las posiciones para el juego, pero eso tomaría una enorme cantidad de tiempo y ciertamente sería muy ineficiente.

Respuestas a la pregunta(0)

Su respuesta a la pregunta