Realm et les tableaux

#1

Bonjour tous le monde,

J’aimerais avoir un peu de votre aide concernant Realm, je pense bien avoir compris le principe car j’arrive parfaitement à le faire fonctionner pour des classes ‘simple’.

voici ma classe qui me pose problème avec un Segmentation Fault dans AppDelegate. J’ai localisé le problème qui vient de mes deux déclarations suivantes.

@objc private dynamic var _coordonner:[String] = [""]
@objc private dynamic var _picture:UIImage = #imageLiteral(resourceName: "fond-maison")

Je souhaite pour cette classe les attribues nom, date,picture, longitude et latitude qui seront unique à la localisation et coordonner qui doit être en multi évaluer.

Je stock donc dedans au format JSON : {x:0.0;y:0.0;z:0.0} il peut très bien y avoir que 1 coordonner comme 200 000 cordonner à stocker dans ce tableau.

import Foundation
import RealmSwift

class PlanData : Object {

     @objc private dynamic var _name:String = ""
     @objc private dynamic var _date:String = ""
     @objc private dynamic var _picture:UIImage = #imageLiteral(resourceName: "fond-maison")
     @objc private dynamic var _longitude:Float = 0.0
     @objc private dynamic var _lattitude:Float = 0.0
     @objc private dynamic var _coordonner:[String] = [""]

var name:String {
    get {
        return _name
    }
    set {
        _name = newValue
    }
...
...
var picture:UIImage {
    get {
        return _picture
    }
    set{
        _picture = newValue
    }
}
var coordonner:[String] {
    get{
        return _coordonner
    }
    set{
        _coordonner = newValue
    }
 }

}

Je n’ai aucune erreur à la compilation mais à l’instant ou l’application ce lance SegmetationFault sans même appeler realm.object(PlanData.self) nul par dans mon application.

Merci de votre aide.

Cdt.

#2

Regarde dans les logs, il n’y aurait pas un message d’erreur posté par Realm au moment du crash?

Sinon c’est peut être le imageLiteral qui pose soucis. Essaie d’utiliser UIImage(named:) à la place.

#3

Si bien sur pour les coordonnées sous forme de tableau voici l’erreur que j’ai qui m’indique que les tableaux ne fait pas parti du format prise en charge par Realm.

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

#4

OK, voilà justement la raison, Realm possède ses propres tableaux List au lieux des tableaux Swift standard. Il te faut utiliser List<String à la place de [String].
Voici la doc officielle à ce sujet : https://realm.io/docs/swift/latest/#many-to-many
Et voici une discussion avec une personne qui a à peu près le même problème que toi : https://stackoverflow.com/questions/42361281/how-to-store-array-of-strings-into-realm-instance-using-a-dictionary