Objective c 使用CFArray在iOS 5中按字母顺序在地址簿中分段显示名称

Objective c 使用CFArray在iOS 5中按字母顺序在地址簿中分段显示名称,objective-c,ios5,nsarray,abaddressbook,xcode4.6.3,Objective C,Ios5,Nsarray,Abaddressbook,Xcode4.6.3,您好,我正在尝试按字母顺序在通讯簿部分的联系人中填充tableview,我正在程序中使用CFArray。到目前为止,我已经成功地在部分中显示联系人,并且字母表的部分计数是正确的。但问题是在每个部分中,数据都是从beggining加载的,也就是说,它总是以A的部分名称开始,所以在B的部分中,它也以A的部分名称开始,依此类推。所以只有A的部分是正确的。如何在tableview中修改代码,使其正确显示每个部分的名称,即不从字母A中加载每个部分的名称,而是在B的部分中加载B的名称,在C的部分中加载C的名

您好,我正在尝试按字母顺序在通讯簿部分的联系人中填充tableview,我正在程序中使用CFArray。到目前为止,我已经成功地在部分中显示联系人,并且字母表的部分计数是正确的。但问题是在每个部分中,数据都是从beggining加载的,也就是说,它总是以A的部分名称开始,所以在B的部分中,它也以A的部分名称开始,依此类推。所以只有A的部分是正确的。如何在tableview中修改代码,使其正确显示每个部分的名称,即不从字母A中加载每个部分的名称,而是在B的部分中加载B的名称,在C的部分中加载C的名称,依此类推?下面是我实现的代码


> TabelVIEW:CyfFurWaldRexXPATH,您使用的是行,但您也应该考虑该节。indexPath同时提供行和节,而忽略节

具体来说,问题发生在您说:

self.persons = CFArrayGetValueAtIndex(self.contactAdd, indexPath.row);

我能够找出问题出在indexPath.row上,所以我设法使它成为全局的,并将此代码放在我的tableview中,它工作得很好

NSUInteger row = 0;
NSUInteger sect = indexPath.section;
for (NSUInteger i = 0; i < sect; ++ i)
    row += [self tableView:tableView numberOfRowsInSection:i];
row += indexPath.row;
self.persons = CFArrayGetValueAtIndex(self.contactAdd, row);
nsu整数行=0;
nsupinteger sect=indexPath.section;
对于(整数i=0;i
我进行了一些故障排除,并在NSLog中发现indexath.row从0变为7,然后又从0开始。当indexPath.row发生更改时,我应该如何在代码中告诉您继续indexPath.row而不是从头开始?什么都不做。你应该考虑一下…1.3、2.6、4.3等等都不是全局的东西,但除此之外,还有什么更好的方法吗?在这段代码之前,它显示为第1节-第0行、第1行、第2行、第2节-第0行、第1行、第3节-第0行、第1行等等。此代码之后,将显示第1节-第0行、第1行、第2行、第2节-第3行、第4行、第3节-第5行、第6行等。
self.persons = CFArrayGetValueAtIndex(self.contactAdd, indexPath.row);
NSUInteger row = 0;
NSUInteger sect = indexPath.section;
for (NSUInteger i = 0; i < sect; ++ i)
    row += [self tableView:tableView numberOfRowsInSection:i];
row += indexPath.row;
self.persons = CFArrayGetValueAtIndex(self.contactAdd, row);