Passer une Structure a un NSArray et vice versa
yanomano
Membre
Bonjour,
Je débute un peu avec objectiveC et je bloque sur une conversion.
Je souhaiterai récupérer une structure que j'ai passé dans un NSArray.
Pour passer la structure dans le NSArray je fais ceci :
// definition de la structure
typedef struct{
double valueA;
double valueB;
double valueC;
}TestStructure;
//creation d'une variable du nouveau type
TestStructure myStructure;
//definition des variables
myStructure.valueA =1.0;
myStructure.valueB =1.0;
myStructure.valueC =1.0;
//Copie de la structure dans un NSData
NSData *myNSData = [NSData dataWithBytes:&myStructure length:sizeof(TestStructure)];
//Creation d'un NSArray
NSArray * myOutput;
//Passage de la structure dans le NSArray
myOutput =[NSArray arrayWithObject:myNSData];
Ce principe fonctionne bien mais je bloque pour extraire la structure
du NSArray et récupérer les valeurs, ou plutôt transformer le NSData contenu en structure...
Merci pour votre aide !
Je débute un peu avec objectiveC et je bloque sur une conversion.
Je souhaiterai récupérer une structure que j'ai passé dans un NSArray.
Pour passer la structure dans le NSArray je fais ceci :
// definition de la structure
typedef struct{
double valueA;
double valueB;
double valueC;
}TestStructure;
//creation d'une variable du nouveau type
TestStructure myStructure;
//definition des variables
myStructure.valueA =1.0;
myStructure.valueB =1.0;
myStructure.valueC =1.0;
//Copie de la structure dans un NSData
NSData *myNSData = [NSData dataWithBytes:&myStructure length:sizeof(TestStructure)];
//Creation d'un NSArray
NSArray * myOutput;
//Passage de la structure dans le NSArray
myOutput =[NSArray arrayWithObject:myNSData];
Ce principe fonctionne bien mais je bloque pour extraire la structure
du NSArray et récupérer les valeurs, ou plutôt transformer le NSData contenu en structure...
Merci pour votre aide !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[monArray addObject:[NSNumber numberWithFloat:maStructure->maValeur]];
??
Utiliser des structures C en Obj-C c'est pas terrible ...
Toujours utiliser NSArray et NSDictionary, ou un objet perso pour les données.
D'autant que sauvegarder des structures C n'est pas portable d'une archi à l'autre (Intel/PPC, 32bits/64bits)
la méthode de mpergand fonctionne pour moi.
myNSData=/color][color=#000000]myOutput objectAtIndex[/color][color=#666600]:[/color][color=#006666]0[/color][color=#666600;
TestStructure myStructure2=*(TestStructure*)/color][color=#000000]myNSData bytes[/color][color=#666600;
Effectivement ce type de conversion n'est sans doute pas très optimisé.
Je code quelques plug-ins pour Quartz composer et je dois échanger un grand nombre de vertex entre ces patches, C'est très lent en utilisant des NSDictionary, C'est pour celà que je suis en train de tester avec des NSArray de structures...