5 votes

Passer et accéder aux structures en utilisant objective-c

Je veux savoir comment transmettre des structures à une autre fonction et accéder ensuite à cette structure dans la fonction appelée. Je développe pour l'iPhone et la raison pour laquelle j'utilise des structs est que je peux éventuellement passer des données sous forme de structs à un serveur construit en C.

Voici la structure :

struct userInfo{
    NSString *firstName;
    NSString *lastName;
    NSString *username;
    NSString *email;
    NSString *ipAddress;
    double latitude;
    double longitude;
};

Ici, je récupère simplement des données saisies par l'utilisateur, ainsi que des données de CoreLocation et l'adresse IP de l'iPhone :

- (IBAction)joinButton {
    struct userInfo localUser;

    localUser.firstName = firstName.text;
    localUser.lastName = lastName.text;
    localUser.username = username.text;
    localUser.email = emailAddress.text;
    localUser.ipAddress = localIPAddress.text;
    localUser.latitude = currentLocation.coordinate.latitude;
    localUser.longitude = currentLocation.coordinate.longitude;

    [myNetworkConnection registerWithServer:&localUser];
}

qui manipule la structure :

- (void)registerWithServer:(struct userInfo*)myUser {

    printf("First name is: %s", myUser.firstName);//error when compiling
}

le compilateur jette cette erreur : request for member 'firstName' in something not a structure or union . Cette structure est-elle hors de portée lorsque j'essaie d'y accéder dans la deuxième fonction ?

7voto

mkb Points 7558

Vous passez dans un pointeur à un struct. Utilisez l'opérateur ->, pas le point.

myUser->firstName

2voto

Je ne peux pas m'empêcher de penser que vous devriez vraiment en faire un objet objective-C avec des propriétés - plus de travail mais tout se comportera mieux et vivra dans l'écosystème NSObject.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X