Almacenamiento de UUID en datos centrales

¿Cuál es el mejor método para almacenar UUID (para la identificación de objects multisistema global) en Core Data? Teniendo en count el tamaño de almacenamiento y las capacidades de indexing.

Idealmente, se almacenaría como datos binarys (en 128 bits), pero ¿hay algún problema inmediato al hacer esto? Sería más eficiente almacenar el tamaño de esta manera en lugar de como un NSString, pero solo quiero comprobar que no haya problemas de performance al almacenar esto como datos binarys. ¿Todavía se indexará correctamente como datos binarys? ¿Hay alguna desventaja al almacenar lo que es efectivamente datos binarys de ancho fijo en un campo de ancho variable?

No estoy demasiado familiarizado con SQLite y sus mecanismos de almacenamiento / indexing, ¡así que quise pedir consejo!

¿Cuántas de estas planeas almacenar? Al almacenarlos como datos binarys se ahorra aproximadamente el 50%, aproximadamente 20 bytes como datos binarys frente a aproximadamente 40 bytes como una cadena. Entonces estás hablando de save un total de 20K por mil UUID, lo que no es tanto que me preocupe por eso de cualquier manera. Sin embargo, si realmente desea savelos como datos binarys, puede hacerlo almacenándolos como objects NSData.

A partir de iOS 11, puede establecer el atributo UUID directamente en el editor de datos básicos. UUID se almacenará como binary automáticamente.

introduzca la descripción de la imagen aquí

A continuación, puede search sus objects Core Data utilizando UUID (en Obj-C, NSUUID ).

 static func fetch(with identifier: UUID) -> AudioRecord? { var record: AudioRecord? moc.performAndWait { let fetchRequest = AudioRecord.request fetchRequest.pnetworkingicate = NSPnetworkingicate(format: "identifier == %@", identifier as CVarArg) fetchRequest.fetchLimit = 1 record = (try? fetchRequest.execute())?.first } return record } 

Almaceno mi UUID como "transformable" y funciona bien.

  1. Agregue esto a su subclass @NSManaged var uuid: NSUUID! : @NSManaged var uuid: NSUUID!

  2. en su model de datos de núcleo (.xcdatamodel file), cree un atributo con nombre uuid con Type Transformable

La consulta también funciona bien, escribo mis pnetworkingicados para searchlos de esta forma:

request.pnetworkingicate = NSPnetworkingicate(format: "uuid == %@", withUuid)