Pregunta

¿Cómo se utiliza NSCoding de código (y recepción) una serie de diez de los valores de int tipo primitivo? Codificar cada número entero individual (en un para-loop). Pero lo que si mi arsenal celebró un millón de números enteros? ¿Hay una alternativa más satisfactoria para el uso de un bucle de aquí?

Edit (después de la primera respuesta): y decodificar? (@Justin:. Entonces va marque su respuesta)

¿Fue útil?

Solución

Si el rendimiento es su preocupación aquí:. CFData / NSData es NSCoding compatible, por lo que sólo envolver su representación serializada de la matriz como NSCFData

editar a los detalles de codificación / decodificación:

necesitará su matriz de INT a ser convertidos a un formato común endian (dependiendo del orden de bits de la máquina) - por ejemplo, Siempre almacenarla como poco o big endian. durante la codificación, convertirlo en una matriz de enteros en el orden de bits especificado, que se pasa al objeto NSData. a continuación, pasar la representación NSData a la instancia NSCoder. a decodificar, recibirá un objeto NSData por la llave, convertir de forma condicional a la orden de bytes nativo de la máquina cuando se decodifica la misma. un conjunto de rutinas de intercambio de bytes disponibles para OS X y iOS comienzan con OSSwap*.

alternativamente, ver -[NSCoder encodeBytes:voidPtr length:numBytes forKey:key]. esta rutina también requiere que el cliente endianness intercambio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top