Cómo usar java script de objeto notación en aplicaciones ios

Video: Desarrollo en HTML5, CSS y javascript de Apps Web, Android, IOS

(javascript Object Notation JSON) se ha convertido en el de facto estándar en términos de la representación de datos en aplicaciones IOS. Puede utilizar JSON para transferir datos a través de la web y como el formato para guardar y recuperar datos de larga vida. JSON es a la vez legible y fácil para las máquinas entender. Los datos en JSON pueden estar en uno de dos estructuras:

Video: javascript. Notación Array. Propiedades dinámicas, for/in y DOM

  • Un objeto que comprende un conjunto-un ordenada de pares de nombre y valor. Cada nombre-valor corresponde a un atributo del objeto. Cada par nombre-valor se puede anidar, en caso de que el atributo de ser representado es de naturaleza jerárquica.

  • Un conjunto ordenado de valores. Cada valor en la matriz puede ser un escalar (un booleano, cadena o valor de número), un objeto o una matriz.

En Tic-Tac-Toe, JSON representa el estado de un juego. Este estado se compone de los siguientes:

  • El jugador actual (reproductor 1 o el reproductor 2) está representado como un número entero (0 para el jugador 1, y 1 para el jugador 2).

  • El estado del juego - ya sea activa o COMPLETE- si es completa, si se trata de ganar o drawn- y si ganó, por quién.

    Los estados también se representan como números enteros, con Inactivo ser -1, Active ser 0, Won ser 1, y Draw ser 2.

  • El estado de la red - esto es, qué símbolos están presentes en cada uno de los cuadrados de la cuadrícula. Tenga en cuenta que los símbolos se representan como el número entero valores de 0, 1 y 2, que representan en blanco, X, y O, respectivamente.

  • El símbolo actual (el que se jugará en el siguiente movimiento). Aquí (y sólo para variar el ejemplo), representamos el símbolo como la cadena “X” o la cadena “O” o un espacio en blanco (”“).

  • El recuento de reproducción (el número de movimientos realizados en el punto actual en el juego) se representa como un entero.

En este código, se muestra el objeto JSON que corresponde a una activa y Tic-Tac-Toe juego:

{"TTTGameKeyCurrentPlayer" : 0,"TTTGameKeyState" : 0,"TTTGameKeyGridState" : "2,1,2,2,1,0,1,2,1","TTTGameKeyCurrentSymbol" : "x","TTTGameKeyPlaycount" : 8}

JSON mapas fácilmente a las estructuras de datos disponibles (tales como matriz, estructuras y objetos) en casi todos los lenguajes de programación. La forma del objeto JSON mapas fácilmente a objetos lenguaje de programación o estructuras, mientras que la forma de la matriz JSON puede asignar a una matriz, vector, lista, o secuencia, básicamente, cualquier estructura de datos puede contener una colección ordenada de objetos.

En Tic-Tac-Toe, el objeto JSON correspondiente al estado del juego se asigna a una NSDictionary, porque un objeto NSDictionary también se compone de pares de valores de nombre anidados. Como resultado, cuando se tiene que guardar el estado del juego, se obtiene su estado como un objeto NSDictionary y luego convertirlo en una cadena JSON.

Cuando se recupera el estado del juego, se hace lo contrario - que se lee en los datos JSON y lo convierten en un objeto NSDictionary y luego usar el NSDictionary para restaurar el juego al estado guardado.

El siguiente ejemplo muestra esta conversión de un objeto de diccionario para JSON y desde el objeto de datos JSON a una cadena (de la SaveGame método en el controlador de vista Sesión de Juego - archivos TTTGameSessionViewController.m y .h):

 - (IBAction) SaveGame: (id) remitente {NSDictionary * savedGameDictionary = [activeGame ToDictionary] -NSError * Error-NSData * jsonData = [NSJSONSerialization dataWithJSONObject: savedGameDictionaryoptions: NSJSONWritingPrettyPrintederror:&error] -NSString * savedGameString = [[NSString alloc] initWithdata: jsonDataencoding: NSUTF8StringEncoding] -NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH] - [savedGameString WriteToFile: savedGamesFilePathatomically: YESencoding: NSUTF8StringEncodingerror: NULL] -}

El método importante aquí es en el dataWithJSONObject método de la clase NSJSONSerialization.

Se puede ver la operación inversa (es decir, de una cadena JSON a un NSDictionary) en el método restoreGame en el mismo controlador de vista:

- (IBAction) restoreGame: (id) {emisor NSLog (@"Restauración de juego") - ... NSError * restoreError = nil-NSMutableDictionary * savedDictionary = [NSJSONSerialization JSONObjectWithdata: [savedGameStringdataUsingEncoding: NSUTF8StringEncoding] opciones: NSJSONReadingMutableContainerserror:&restoreError] -activeGame = [[TTTGame alloc] initFromDictionary: savedDictionary] -TTTGameGrid * gameGrid = [activeGame getGameGrid] -si [boardView disableInput] - [boardView setGrid ([activeGame isActive]!): gameGrid] - [gameView redibujo] -}

Aquí, el método de clave es la JSONObjectWithData, que hace la operación inversa de la creación de la Objective-C NSDictionary de datos JSON.

Artículos Relacionados