Declare una matriz de Int en Realm Swift

¿Cómo puedo declarar una matriz de integers dentro de RLMObject ?

Me gusta :

 dynamic var key:[Int]? 

Da el siguiente error:

 Terminating app due to uncaught exception 'RLMException', reason: ''NSArray' is not supported as an RLMObject property. All properties must be primitives, NSString, NSDate, NSData, RLMArray, or subclasses of RLMObject. See https://realm.io/docs/objc/latest/api/Classes/RLMObject.html for more information.' 

Las lists de primitivas no son compatibles todavía, desafortunadamente. Existe el problema # 1120 para rastrear la adición de soporte para eso. Encontrará algunas ideas sobre cómo puede solucionarlo en este momento.

La solución más fácil es crear un object para mantener valores int. Luego, el model tiene una list del object.

 class Foo: Object { let integerList = List<IntObject>() // Workaround } class IntObject: Object { dynamic var value = 0 } 

La oferta aceptada es muy costosa en términos de memory. Puede get una list de "n" muy grandes de objects.

No es una cuestión de bien y mal, pero creo que es bueno escribir aquí una solución diferente.

Otro enfoque:
Decidí usar una sola cadena para representar una matriz Int.

En mi class de reino definí una variable:

 dynamic var arrInt: String? = nil 

Y utilícelo muy fácilmente:

 let arrToSave = [0, 1, 33, 12232, 394] <MY_CUSTOM_REALM_CLASS>.arrInt = arrToSave.map { String(describing: $0) }.joined(separator: ",") 

Y el path de vuelta:

 let strFetched = <MY_CUSTOM_REALM_CLASS>.arrInt let intArray = strFetched.components(separatedBy: ",").flatMap { Int($0) } 

Estaré encantado de escuchar sus comentarios, ya que creo que este enfoque es mejor.

Como indica el post de error, debe usar RLMArray , o mejor dicho, es una List equivalente de RLMArray .

Ver: Documentos de dominio