Mettre une structure C dans un NSArray (ou autre truc qui prend des id ^^ )

GreensourceGreensource Membre
20:27 modifié dans API AppKit #1
Bonsoir! Je viens de tomber sur un os! J'ai voulu mettre des CGPoint dans un NSArray...Warning mes cher, une struct C n'est évidemment pas un objet NSObject donc...bas c'est bien ça le problème, je vois pas de solution satisfaisante. J'ai pensé à :
1- Faire mon propre object CGPoint
2- Utilisé un tableau C (beuuuurk z'aime pô le C ^^)

Si quelqu'un avais une meilleurs idée que ce que mon cerveau me propose je prend! Bonne nuit et bon cocoa au lait demain matin  :P

Réponses

  • CeetixCeetix Membre
    20:27 modifié #2
    Ah les tableaux en C ... C'est sûr que c'est moins cool que les petits Array avec objc ^^. Sinon; eh bien non je n'ai pas de meilleurs solution :p
  • GreensourceGreensource Membre
    20:27 modifié #3
    J'ai fait un petit tour avec mon amis google, certain préconise d'encapsuler la struct dans un objet (si c'est bien ce que Wrap veux dire ^^).
    Faut vraiment que je dorme mais je vois ça demain ;)
  • CeetixCeetix Membre
    20:27 modifié #4
    Moi demain je me penche sur mon cours de Maths ... Les séries de fonctions :'(  et après je reviens ^^. Bonne nuit (un peu hors sujet là )
  • schlumschlum Membre
    20:27 modifié #5
    dans 1237156900:

    J'ai fait un petit tour avec mon amis google, certain préconise d'encapsuler la struct dans un objet (si c'est bien ce que Wrap veux dire ^^).
    Faut vraiment que je dorme mais je vois ça demain ;)


    Cet objet existe déjà , il s'appelle NSValue  ;)
    "+ (NSValue *)valueWithPoint:(NSPoint)aPoint"

    En passant par "NSPoint NSPointFromCGPoint(CGPoint cgpoint)"

    Puis pour récupérer :
    "CGPoint NSPointToCGPoint(NSPoint nspoint)"

    Et
    - (NSPoint)pointValue
  • AliGatorAliGator Membre, Modérateur
    20:27 modifié #6
    dans 1237157330:

    dans 1237156900:

    J'ai fait un petit tour avec mon amis google, certain préconise d'encapsuler la struct dans un objet (si c'est bien ce que Wrap veux dire ^^).
    Faut vraiment que je dorme mais je vois ça demain ;)


    Cet objet existe déjà , il s'appelle NSValue  ;)
    "+ (NSValue *)valueWithPoint:(NSPoint)aPoint"

    En passant par "NSPoint NSPointFromCGPoint(CGPoint cgpoint)"

    Puis pour récupérer :
    "CGPoint NSPointToCGPoint(NSPoint nspoint)"

    Et
    - (NSPoint)pointValue

    Pas la peine, il existe déjà  valueWithCGPoint, pourquoi utiliser valueWithPoint + CGPointToNSPoint ? ;)
    (C'est dans la catégorie NSValueUIGeometryExtensions, dispo sur l'iPhone mais bon il est rare d'avoir besoin de CGPoints directement hors de l'iPhone, pour OSX on utilise souvent NSPoint/NSRect/... plutôt, rarement besoin de descendre si bas dans CoreGraphics qd on programme sous OSX)
  • schlumschlum Membre
    20:27 modifié #7
    Ah ben désolé, j'ai pas la doc iPhone, j'ai que le NSValue classique  :P
  • NseaProtectorNseaProtector Membre
    20:27 modifié #8
    A mon avis quand il va se réveiller, il va être content.
    Mais dites nous ? Pour trouver ce genre d'info c'est l'habitude, c'est appKido ?
  • schlumschlum Membre
    20:27 modifié #9
    dans 1237166960:

    A mon avis quand il va se réveiller, il va être content.
    Mais dites nous ? Pour trouver ce genre d'info c'est l'habitude, c'est appKido ?


    Bah l'expérience et la doc ouais  ;)

    Mais pour le coup AppKiDo m'a trahi, il ne montre pas les trucs spéciaux iPhones  :)
  • schlumschlum Membre
    mars 2009 modifié #10
    Et puis si vous voulez utiliser des structures à  vous, vala comment on fait une catégorie de NSValue :

    @interface NSValue (MyValue)<br /><br />+ (NSValue*)valueWithMyStruct:(struct myStruct)s;<br />- (struct myStruct)myStructValue;<br /><br />@end<br /><br />@implementation NSValue (MyValue)<br /><br />+ (NSValue*) valueWithMyStruct:(struct myStruct)s<br />{<br />&nbsp; &nbsp; return [NSValue valueWithBytes:&amp;s<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;  objCType:@encode(struct myStruct)];<br />}<br /><br />- (struct myStruct)myStructValue<br />{<br />&nbsp; &nbsp; struct myStruct rep;<br />&nbsp; &nbsp; [self getValue:&amp;rep];<br />&nbsp; &nbsp; return rep;<br />}<br /><br />@end
    

  • GreensourceGreensource Membre
    20:27 modifié #11
    Trop bien!  :adios!:
    Vous êtes des chef les gars vraiment! J'ai regarder pourtant la doc de NSValue et je suis passer à  coté! Merci merci!
  • RocouRocou Membre
    20:27 modifié #12
    Bonjour,

    Je fais remonter ce fil car je ne comprends pas l'utilisation de NSValue.

    Pour ma part, je voudrais stocker des NSRect dans un NSArray.

    Je voudrais utiliser - (id)initWithBytes:(const void *)value objCType:(const char *)type

    Mais je ne comprends pas ce que je dois mettre à  la place de 'value' et 'type'
  • CéroceCéroce Membre, Modérateur
    20:27 modifié #13
    <br />NSRect rect = NSMakeRect(20, 20, 100, 200);<br />NSValue *rectValue = [NSValue valueWithRect:rect];<br />NSArray* array = [NSArray arrayWithObject:rectValue]; <br />
    
  • RocouRocou Membre
    20:27 modifié #14
    dans 1267788260:

    <br />NSRect rect = NSMakeRect(20, 20, 100, 200);<br />NSValue *rectValue = [NSValue valueWithRect:rect];<br />NSArray* array = [NSArray arrayWithObject:rectValue]; <br />
    


    Merci beaucoup!  :)
Connectez-vous ou Inscrivez-vous pour répondre.