5

我想知道如何将结构传递给另一个函数,然后在被调用函数中访问该结构。我正在为 iPhone 开发,我使用结构的原因是我最终可以将数据作为结构传递给用 C 构建的服务器。

这是结构:

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

在这里,我只是获取一些用户输入的数据以及一些 CoreLocation 数据和 iPhone 的 IP 地址:

- (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];
}

处理结构的函数:

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

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

编译器抛出此错误:request for member 'firstName' in something not a structure or union. 当我尝试在第二个函数中访问它时,该结构是否超出范围?

4

2 回答 2

7

您正在传递一个指向结构的指针。使用 -> 运算符,而不是点。

myUser->firstName
于 2009-06-30T15:54:50.133 回答
2

我不禁认为你真的应该把它变成一个具有属性的合适的 Objective-C 对象——做更多的工作,但它会表现得更好,并且生活在 NSObject 生态系统中。

于 2009-06-30T16:54:53.090 回答