Red de conocimiento informático - Conocimiento informático - Cómo archivar objetos personalizados, explique brevemente

Cómo archivar objetos personalizados, explique brevemente

Sin embargo, los datos complejos como UIImage no se pueden archivar directamente. Sin embargo, tenemos una solución alternativa, que es convertir el objeto UIImage a NSData primero y luego archivar NSData1.

Nota 1: Exactamente, esto depende de la versión de iOS. En iOS4, UIImage no implementa el protocolo NSCoding, pero en iOS5, UIImage implementa el protocolo NSCoding.

Para tipos personalizados, también podemos referirnos a este enfoque, es decir, primero convertir el tipo personalizado a NSData y luego archivar NSData.

El problema es que cuando NSKeyedArchiver archiva un objeto personalizado, ¿cómo sabe cómo codificar el objeto personalizado en NSData y cuando invertimos el archivo desde el archivo, cómo sabe NSKeyedUnarchiver cómo convertir NSData en un? ¿Objeto personalizado? ¿Definir objeto?

Este es el problema que el protocolo NSCoding necesita resolver. De hecho, el protocolo NSCoding especifica dos métodos para resolver estos dos problemas.

Cuando NSKeyedArchiver archiva un objeto, llama al método encodeWithCoder: del objeto, que se utiliza para convertir el objeto a NSData (o uno de los otros cinco tipos, como NSString y cuando NSKeyedUnarchiver desarchiva el objeto); , llama al método initWithCoder: del objeto para convertir NSData (u otros cinco tipos, como NSString)