Core Data : optionnal, transient, indexed

Philippe49Philippe49 Membre
03:07 modifié dans API AppKit #1
Question 1
Quelq'un aurait-il sous la main une définition claire de ces trois options pour les attributes ? 

Il me semble avoir compris transient : Attribut présent dans le model de l'entité mais non enregistré.

Question 2
J'ai défini un attribut "transient" , et j'ai laissé "undefined" pour le type de l'attribut. Le programme marche bien, s'enregistre correctement en ne prenant pas en compte cet attribut, mais je ne suis pas trop sur de "undefined".

Réponses

  • uocramuocram Membre
    03:07 modifié #2
    En grand breton ? :


  • Philippe49Philippe49 Membre
    mai 2009 modifié #3
    En Grand François : Un attribut "transient" fonctionne comme un attribut classique, y compris le undo-redo, mais sans être pris en compte dans le fichier lors de l'enregistrement. Je l'avais compris ainsi.
    Après je saisis moins clairement la Note. Dans mon cas j'ai déclaré mon attribut en "undefined", et j'ai codé dans mon .h le getter pour créer effectivement l'objet en autorelease. J'obtiens l'effet voulu. Cela voudrait dire que je ne peux pas espérer un fonctionnement complet du undo-redo ?

  • uocramuocram Membre
    03:07 modifié #4
    C'est comme cela que je l'avais compris aussi.
    Pour le reste, un attribut transient est assez souvent une valeur calculée d'après d'autres valeurs d'attributs, utilisée en lecture seule et pour laquelle un "get" seul est suffisant, sans même la déclarer dans le Data Model, genre :

    - (NSString *)firstAndLastName;
    


    Sinon, je n'ai jamais eu besoin de valeurs "transients" (volatiles dirons-nous) non dérivées par calcul de valeurs non "transients", et ne sais donc pas si le undo-redo est inefficace.

  • Philippe49Philippe49 Membre
    03:07 modifié #5
    dans 1242836535:

    C'est comme cela que je l'avais compris aussi.
    Pour le reste, un attribut transient est assez souvent une valeur calculée d'après d'autres valeurs d'attributs, utilisée en lecture seule et pour laquelle un "get" seul est suffisant, sans même la déclarer dans le Data Model, genre :
    - (NSString *)firstAndLastName;
    


    C'est d'ailleurs comme cela que fait Hillegass.
    Bon mais je trouvais intéressant d'en avoir la trace visuelle dans le model. Je suppose que les attributs "transients" (volatiles) sont ignorés lors du désarchivage , il semble même que les autres aussi si je regarde le métadata
    &lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;!DOCTYPE database SYSTEM &quot;file:///System/Library/DTDs/CoreData.dtd&quot;&gt;<br /><br />&lt;database&gt;<br />&nbsp; &nbsp; &lt;databaseInfo&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;version&gt;134481920&lt;/version&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;UUID&gt;92F9CD6B-CA83-495D-8E09-7F87E0E478B0&lt;/UUID&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;nextObjectID&gt;116&lt;/nextObjectID&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;metadata&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;plist version=&quot;1.0&quot;&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;dict&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;NSPersistenceFrameworkVersion&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;integer&gt;186&lt;/integer&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;NSStoreModelVersionHashes&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;dict&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;Company&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;data&gt;<br />		Hs/a3g3WO890l5cOovt2pjoLnjv4rZJQ2oKcLYq62hw=<br />		&lt;/data&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;Department&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;data&gt;<br />		U5j6fiL9+4BQeArUN2y6X1FpPEiHvSf7nqucyyd5ZnU=<br />		&lt;/data&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;Employee&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;data&gt;<br />		flSh531lS+jHSc8RLlPRmKRrOeE3IutsXCED0hgWO4M=<br />		&lt;/data&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/dict&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;NSStoreModelVersionHashesVersion&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;integer&gt;3&lt;/integer&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;key&gt;NSStoreModelVersionIdentifiers&lt;/key&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;array&gt;&lt;/array&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/dict&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/plist&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;/metadata&gt;<br />&nbsp; &nbsp; &lt;/databaseInfo&gt;
    

Connectez-vous ou Inscrivez-vous pour répondre.