Ios Tableview-基于sqlite中的数据创建NumberOfSectionsTableView

Ios Tableview-基于sqlite中的数据创建NumberOfSectionsTableView,ios,sqlite,xcode4.2,tableview,Ios,Sqlite,Xcode4.2,Tableview,我目前正在使用sqlite创建一个TableView应用程序,到目前为止,它可以按预期工作。第一个视图是美国所有州的列表,并在一个名为“州”的部分按字母顺序返回。我的问题是…如何为这些数据创建一个按字母顺序排列的分区列表?换句话说,创建一个名为“a”的部分,其中包含阿拉巴马州、阿拉斯加州、亚利桑那州和阿肯色州。一个名为“C”的部分,包含加利福尼亚州、科罗拉多州、康涅狄格州。它基本上会对结果进行梳理,查找每个州的第一个字母,如果有匹配项,则将该州放在适当的部分 我遇到过一些文章,这些文章描述了如何

我目前正在使用sqlite创建一个TableView应用程序,到目前为止,它可以按预期工作。第一个视图是美国所有州的列表,并在一个名为“州”的部分按字母顺序返回。我的问题是…如何为这些数据创建一个按字母顺序排列的分区列表?换句话说,创建一个名为“a”的部分,其中包含阿拉巴马州、阿拉斯加州、亚利桑那州和阿肯色州。一个名为“C”的部分,包含加利福尼亚州、科罗拉多州、康涅狄格州。它基本上会对结果进行梳理,查找每个州的第一个字母,如果有匹配项,则将该州放在适当的部分

我遇到过一些文章,这些文章描述了如何做到这一点,但与sqlite无关。任何帮助都将不胜感激


提前谢谢你

首先,所有这些非sqlite示例可能都非常合适。从NSArray或sqlite数据库获取数据没有什么特别之处。反正

有几个选择。首先,这个例子非常简单,我可能只需要读入州名称(当然是有序的),然后在阅读过程中构建我的模型(例如,查看第一个字母,如果不同的第一个字母开始一个新的部分,等等)

第二个选项是在viewDidLoad期间读取支持在我的tableview后面构建模型所需的最小数据。我个人使用的模型是截面对象的NSMutableArray,每个截面对象都由截面标题和行对象数组组成,其中这些行对象只是数据库中相关行的唯一标识符。然后,为了填充该模型,我只需执行如下sql语句:

select substr(last_name,1,1), employee_id from employee order by last_name, first_name;
在此基础上,我将循环并构建一个节数组的模型,并为每个节构建一个该节中各个项目的唯一标识符数组


还有很多其他的方法。希望这能让你走。如果没有,请用tableview背后的模型更新您的问题,也许还有一些您尝试过的代码,我们很乐意为您提供更多帮助。

一种方法可能是提供一个数组结构。数组的每个部分将包含一个状态数组,这些状态与相同的状态首字母匹配。在这个结构上工作,然后实现datasource和delegate方法

由于我碰巧做了一些非常类似的事情,这里有一个代码片段来提供结构(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*bc=[[BrowserContents alloc]init];
//创建一个数组以容纳子数组
NSInteger sectionCount=[bc getNumberOfCategories];
NSMutableArray*sectionsArray=[NSMutableArray阵列容量:sectionCount];
//迭代每个部分,创建每个子数组
对于(int i=0;i
注意:
BrowserContents是一个类,它应该包含所有状态的列表、类别的数量以及它应该属于的类别的id(例如:a->1、B->2等……假设您有以a和B开头的状态)。最后查看专业版iPhone和iPad数据库应用程序编程一书。这是理解iOS中数据库编程的一个很好的资源。

Robert,谢谢你的回复。我感谢你的建议。我将尝试你建议的第二种选择。再次感谢你!Tiguero-Thnak非常感谢您的回复和我的示例代码以供参考。非常感谢!谢谢你的时间!