【发布时间】:2009-06-30 15:52:39
【问题描述】:
我想知道如何将结构传递给另一个函数,然后在被调用函数中访问该结构。我正在为 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。当我尝试在第二个函数中访问它时,该结构是否超出范围?
【问题讨论】:
-
没有理由将 Objective-C 对象放在结构中。不要这样做。要么创建一个对象来保存您的数据,将其放入 NSDictionary,要么将所有内容转换为原生 C 类型,例如 char* 用于您的结构。
标签: iphone c objective-c struct argument-passing