我目前正在使用sqlite创建一个TableView应用程序,到目前为止,它按预期工作。第一个视图是美国所有州的列表,并在一个名为“州”的部分中按字母顺序返回。我的问题是......如何为这些数据创建按字母顺序排列的列表?换句话说,创建一个名为“A”的部分,其中包含阿拉巴马州,阿拉斯加州,亚利桑那州,阿肯色州。名为“C”的部分,包含康涅狄格州的科罗拉多州加利福尼亚州。它基本上会梳理结果,寻找每个州的第一个字母,如果匹配,将该状态放在适当的部分。
我遇到过一些描述如何执行此操作而不是相对于sqlite的文章。任何帮助将不胜感激!!
提前谢谢!
答案 0 :(得分:1)
首先,所有这些非sqlite示例都可能是完全足够的。从NSArray或sqlite数据库获取数据没什么特别之处。无论如何,
有两种选择。首先,这个例子是如此微不足道,以至于我可能只是阅读州名(当然是有序的),并在我经历时建立我的模型(例如,看第一个字母,如果不同的第一个字母开始一个新的部分等等。)。
第二个选项是在viewDidLoad期间读取支持在tableview后面构建模型所需的最小数据。我个人使用的模型是Section对象的NSMutableArray,每个section对象都包含section头和Row对象数组,其中这些Row对象只是数据库中相关行的唯一标识符。然后,为了填充该模型,我只是执行一个sql语句,如:
select substr(last_name,1,1), employee_id from employee order by last_name, first_name;
由此,我将遍历并构建一个部分数组的模型,并为每个部分创建该部分中各个项目的唯一标识符数组。
也有很多其他方法。希望这会让你前进。如果没有,请使用您的tableview背后的模型更新您的问题,也许还有一些您尝试过的代码,我们很乐意为您提供更多帮助。
答案 1 :(得分:0)
一种方法可能是提供一个数组数组的结构。数组的每个部分都将包含与相同的第一个状态字母匹配的状态数组。然后使用此结构来实现数据源和委托方法。
正如我碰巧做一些非常相似的事情,这里有一个代码片段来提供结构(self.browserContents)。我希望它会有所帮助:
BrowserContents *bc = [[BrowserContents alloc] init];
// Create an array to hold the sub arrays
NSInteger sectionCount = [bc getNumberOfCategories];
NSMutableArray *sectionsArray = [NSMutableArray arrayWithCapacity:sectionCount];
// Iterate over each section, creating each sub array
for (int i = 0; i < sectionCount; i++) {
NSMutableArray *singleSectionArray = [NSMutableArray arrayWithCapacity:1];
[sectionsArray addObject:singleSectionArray];
}
// Fill up each section
NSMutableArray *contentsTemp = bc.contents;
for (BrowserStateItem *item in contentsTemp) {
[(NSMutableArray *)[sectionsArray objectAtIndex:[item categoryId]] addObject:item];
}
// Iterate over each section array to sort the items in the section
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
for (NSMutableArray *singleSectionArray in sectionsArray)
{
NSArray *sortedSection = [indexedCollation sortedArrayFromArray:singleSectionArray collationStringSelector:@selector(name)];
[self.browserContents addObject:sortedSection];
}
注意:强> BrowserContents是一个类,应该包含所有状态的列表,类别的数量和它应该属于的类别的ID(例如:A-> 1,B-> 2等......假设你有开始的状态与A和B)。最后查看书籍专业iPhone和iPad数据库应用程序编程。这是理解iOS中数据库编程的一个很好的资源。