我试图找出如何使用objective-c为iPhone SDK编程做嵌套数组或多维数组。
我的数据是这样的,3列和10到50行。
name department year
John Sales 2008
Lisa Sales 2009
Gina Support 2007
感谢任何帮助
答案 0 :(得分:5)
我不确定这是你的例子还是你的术语,但这不是一个多维数组,而是一系列记录。我会把你的每个记录都写成一个类:
@interface Employee
NSString* name;
NSString* dept;
NSString* year;
@end
@property (nonatomic,retain) NSString* name;
@property (nonatomic,retain) NSString* dept;
@property (nonatomic,retain) NSString* year;
// ... rest of class def
Employee* a = [[Employee alloc] init];
a.name = @"Bob";
a.dept = @"Sales";
a.year = @"2008";
// declare others
NSArray* array = [NSArray arrayWithObjects:a,b,c,nil];
[a release];
这比使用struct
更客观C-ish。
如果你的确意味着一个多维数组,那么“明显”的方法就没有错。当然你可能想把它包装在一个类中,这样你也可以编写一些实用工具方法来使它更容易处理。
答案 1 :(得分:1)
你是否可以制作这样的结构:
struct UserInfo
{
string name;
string department;
int year;
}
struct UserInfo users[3];
users[0].name = "John";
etc....
并从结构中创建一个数组,这样您就不必处理多维数组了?如果没有,那就不理我! :)
答案 2 :(得分:1)
嵌套数组是在Cocoa中执行多维数组的唯一真正实用的方法。您可以使用objectAtRow:column:
等方法在NSArray上定义类别,以便更方便地访问项目。虽然在你的情况下,我同意Caleb的看法,看起来你不需要这样 - 你的数据就像一个对象数组。
答案 3 :(得分:0)
来自@Stephen示例......您可以这样做以获得第一个员工姓名。
Employee *e = (Employee *) [array objectAtIndex:0];
NSLog(@"Name: %@", e.name);