Core Data erreur: Impossible de créer le NSSet de la relation...

berfisberfis Membre
juillet 2012 modifié dans API AppKit #1
[font=arial,helvetica,sans-serif]Je fais mes premiers pas dans les "relationships" de Core Data.[/font]



[font=arial,helvetica,sans-serif]J'ai deux entités. L'une est "Map", l'autre est "Legends". Il peut y avoir plusieurs légendes pour une carte. J'ai donc une relation à  un (légende -> carte) qui est réversible à  plusieurs (carte <-légende), et donc le graphe Map <-->> Legends).[/font]



[font=arial,helvetica,sans-serif]Je binde le NSArrayController des légendes à  la sélection du NSObjectController de la carte (clé: Content Set). Je lance et j'obtiens ça:[/font]


<br />
[b]2012-07-11 14:31:45.599 TestRelations[9445:403] Cannot create NSSet from object Relationship &#39;legends&#39; on managed object (0x7fbfac018950) &lt;NSManagedObject: 0x7fbfac018950&gt; (entity: Map; id: 0x7fbfac019ed0 &lt;x-coredata:///Map/t2AE6891F-2A5B-40DC-A633-97AE9F19AF562&gt; ; data: {[/b]<br />
[b]	legends =	 ([/b]<br />
[b]	);[/b]<br />
[b]	scale = 1;[/b]<br />
[b]}) with objects {([/b]<br />
[b])} of class _NSFaultingMutableOrderedSet[/b]<br />
<br />




Pouvez-vous me dire ce que je fais faux?



Merci!
Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    Non, mais les bindings ajoutent un niveau d'abstraction supplémentaire. Quand ça ne marche pas, rapproche-toi du MOC.

    Peux-tu accéder à  legends par le code?
  • [font=arial,helvetica,sans-serif]Merci, Céroce, j'ai trouvé. En relisant bien le message d'erreur, je lis _NSFaultingMutableOrderedSet. Ordered? Que diable? En me basant sur un tutoriel, j'ai aveuglément coché cette option en me disant que si Core Data voulait de l'ordre, j'étais partant.[/font]



    [font=arial,helvetica,sans-serif]Erreur fatale.[/font]



    [font=arial,helvetica,sans-serif]En décochant l'option, tout se passe comme il devrait, c'est à  dire... bien.[/font] Vivant au pays des horlogers, ce genre de raffinement devrait me combler de bonheur. Pourquoi donc ne sauté-je pas de joie?
  • CéroceCéroce Membre, Modérateur
    Oui, c'est une nouveauté, semble-t-il.

    Voilà  qui attise ma curiosité. Je suppose qu'un NSSet ordonné doit être un NSArray? Peut-on utiliser le binding de NSArrayController sur un array plutôt qu'un set, du coup ? À tester.
  • NSMutableOrderedSet hérite de NSOrderedSet, mais NSOrderedSet n'hérite pas de NSSet! Il hérite de NSObject.

    Il existe des méthodes pour transformer NSArray <--> NSOrderedSet, donc un NSValueTransformer est possible. Par contre j'ai essayé avec une array. Ca plante.
  • CéroceCéroce Membre, Modérateur
    Merci pour l'info.
Connectez-vous ou Inscrivez-vous pour répondre.