用于uitableview分组的多个数组中的objective-c溢出数组

Posted

技术标签:

【中文标题】用于uitableview分组的多个数组中的objective-c溢出数组【英文标题】:objective-c spilt array in multiple arrays for uitableview grouped 【发布时间】:2010-10-13 13:36:07 【问题描述】:

嗨,我有一个需要排序的对象数组(名称上的字母)

ArtistVO *artist1 = [ArtistVO alloc];
artist1.name = @"Trentemoeller";
artist1.imgPath = @"imgPath";

ArtistVO *artist2 = [ArtistVO alloc];
artist2.name = @"ATrentemoeller";
artist2.imgPath = @"imgPath2";


ArtistVO *artist3 = [ArtistVO alloc];
artist3.name = @"APhextwin";
artist3.imgPath = @"imgPath2";    

//NSLog(@"%@", artist1.name);
NSMutableArray *arr = [NSMutableArray array];
[arr addObject:artist1];
[arr addObject:artist2];
[arr addObject:artist3];


NSSortDescriptor *lastDescriptor =
[[[NSSortDescriptor alloc]
  initWithKey:@"name"
  ascending:YES
  selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];    

NSArray * descriptors =
[NSArray arrayWithObjects:lastDescriptor, nil];
NSArray * sortedArray =
[arr sortedArrayUsingDescriptors:descriptors];    

NSLog(@"\nSorted ...");
NSEnumerator *enumerator;
enumerator = [sortedArray objectEnumerator];

ArtistVO *tmpARt;
while ((tmpARt = [enumerator nextObject])) NSLog(@"%@", tmpARt.name);    

工作正常。但现在我需要将这个 awway 拆分为在分组的 uitableview 中使用

    self.sortedKeys =[[NSArray alloc]
                  initWithObjects:@"search",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];


NSMutableArray *arrTemp0 = [[NSMutableArray alloc]
                     initWithObjects:@"000",nil];    
NSMutableArray *arrTemp1 = [[NSMutableArray alloc]
                     initWithObjects:@"Andrew",@"Aubrey",@"Aalice", @"Andrew",@"Aubrey",@"Alice",@"Andrew",@"Aubrey",@"Alice",nil];
NSMutableArray *arrTemp2 = [[NSMutableArray alloc]
                     initWithObjects:@"Bob",@"Bill",@"Bianca",@"Bob",@"Bill",@"Bianca",nil];
NSMutableArray *arrTemp3 = [[NSMutableArray alloc]
                     initWithObjects:@"Candice",@"Clint",@"Chris",@"Candice",@"Clint",@"Chris",nil];
NSMutableArray *arrTemp4 = [[NSMutableArray alloc]
                     initWithObjects:@"Dandice",@"Dlint",@"Dhris",nil];
NSDictionary *temp =[[NSDictionary alloc]
                     initWithObjectsAndKeys:arrTemp0, @"search", arrTemp1,@"A",arrTemp2,
                     @"B",arrTemp3,@"C",arrTemp4,@"D",nil];


self.tableContents =temp;

所以所有第一个字母“a”的艺术家都在一个数组中……“b”在一个数组中,依此类推。

我需要做一些字符串比较还是有更好的方法?

【问题讨论】:

【参考方案1】:

怎么样:

创建一个空的 NSMutableDictionary。

遍历所有字符串。对于每个字符串:

如果字符串为空,则忽略此字符串。 获取包含转换为大写字符串的第一个字符的 NSString。这将是您的字典键。 查字典看它是否已经包含这个键。 如果没有,请创建一个仅包含您的字符串的新 NSMutableArray,并将其作为值添加到此新键中。 如果是这样,请将此字符串添加到现有数组的末尾。

循环结束。

【讨论】:

谢谢。认为可能有一种更小的方式,例如:“通过选择器从数组返回数组”类似于排序描述符的东西

以上是关于用于uitableview分组的多个数组中的objective-c溢出数组的主要内容,如果未能解决你的问题,请参考以下文章

具有多个部分的静态分组 UITableView 的默认外观

如何对数组obj进行分组?

使用 Realm 和 Swift 的具有多个部分的 UITableView

数组分组

如何对数组中的日期进行分组?

UITableView:停止自动滚动超出所选位置