如何创建嵌套数组或多维数组

时间:2009-07-14 14:48:28

标签: objective-c iphone

我试图找出如何使用objective-c为iPhone SDK编程做嵌套数组或多维数组。

我的数据是这样的,3列和10到50行。

name     department     year
John     Sales          2008
Lisa     Sales          2009
Gina     Support        2007

感谢任何帮助

4 个答案:

答案 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);