iOS:存储行和列的表

时间:2013-04-22 04:15:27

标签: iphone ios xcode

我只是在考虑什么是最好的方式,即存储具有多个行和列的数据的数据结构。 Shoudl我把它存储为: 1.阵列数组? 2. NSDictionary?

或iOS中是否有类似网格的数据结构,我可以轻松地从数据结构中获取任何行/列?例如,我必须能够获取第5行第3列中的值。目前,比方说,我将每一行存储为一个数组,并将这些数组存储在另一个数组中(比如数组数组),然后获取在第5行的第3列中的值,我需要获取数组数组中的第5行,然后在结果数组中,我需要获取第3个对象。有一个更好的方法吗?请问?

3 个答案:

答案 0 :(得分:3)

  

然后要获取第5行第3列中的值,我需要获取第5个   在数组数组中行,然后在结果数组中,我需要   获取第三个对象。有更好的方法吗?

数组数组适用于实现,最近添加到Objective-C的集合下标使这更容易 - 您可以使用像

这样的表达式
NSString *s = myData[m][n];

获取nm列的字符串。

也就是说,为您的数据结构创建一个单独的类可能仍然是一个好主意,这样可以保护您的其余代码不需要知道数据的存储方式。这也将简化将实现从数组数组更改为SQLite表或其他内容的过程。

您的数据存储类不需要花哨或复杂。这是第一遍:

@interface DataTable

- (id)objectAtRow:(NSInteger)row column:(NSInteger)column;
- (void)setObjectAtRow:(NSInteger)row column:(NSInteger)column;

@end

我相信你可以看到如何根据数组数组来实现它们。当调用者尝试设置当前边界之外的值时,您将需要做一些工作来添加行和/或列。您可能还希望添加对fast enumeration等内容的支持以及对property lists的写入和阅读,但这可能会在以后发生。

答案 1 :(得分:2)

还有其他方法,但您使用的方法没有任何问题。例如,您可以使用带有NSIndexPath类型的键的NSDictionary,或者甚至是“row,col”形式的字符串键,但除了稀疏矩阵之外,我没有看到任何优势。

答案 2 :(得分:1)

您可以使用正在执行的数组数组,也可以使用字典数组。要么是好的,我认为没有一个优先于另一个。这一切都取决于最方便您设置数据结构的方式。使用任一方法访问表视图的数据同样容易。