gpt4 book ai didi

iphone - 算法:Cocoa Touch 中的数组数组(可能使用 NSCountedSet)

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:31 25 4
gpt4 key购买 nike

就解释而言,这个有点乏味,所以开始吧。我实质上是在 iPhone 上用多个部分填充一个 tableView,每个部分可能有多个行。据我了解,最好有一个数组数组,这样您就可以通过向顶级计数数组发送消息来简单地确定一个有多少部分,然后对于每个部分的行,对内部数组执行相同的操作).我的数据是字典的形式。字典中的键/值对之一决定了它在 tableView 上的显示位置。示例如下:

{
name: "bob",
location: 3
}
{
name: "jane",
location: 50
}
{
name: "chris",
location: 3
}

在这种情况下,我有一个包含两个子数组的数组。第一个子数组将包含两个包含 bob 和 chris 的字典,因为它们都是位置 3 的一部分。第二个子数组将包含 jane,因为她位于位置 50。我在 Cocoa 中填充此数据结构的最佳选择是什么? C 中的散列表可能可以解决问题,但我宁愿使用 Cocoa 中可用的类。

谢谢,如果我需要进一步说明,请告诉我。

最佳答案

以下代码有效:(编辑: 添加了我的初始化代码)

NSArray * arrayOfRecords = [NSArray arrayWithObjects:

[NSDictionary dictionaryWithObjectsAndKeys:
@"bob", @"name",
[NSNumber numberWithInt:3], @"location", nil],

[NSDictionary dictionaryWithObjectsAndKeys:
@"jane", @"name",
[NSNumber numberWithInt:50], @"location", nil],

[NSDictionary dictionaryWithObjectsAndKeys:
@"chris", @"name",
[NSNumber numberWithInt:3], @"location", nil],

nil];

NSMutableDictionary * sections = [NSMutableDictionary dictionary];

for (NSDictionary * record in arrayOfRecords)
{
id key = [record valueForKey:@"location"];
NSMutableArray * rows = [sections objectForKey:key];

if (rows == nil)
{
[sections setObject:[NSMutableArray arrayWithObject:record] forKey:key];
}
else
{
[rows addObject:record];
}
}

NSArray * sortedKeys = [[sections allKeys] sortedArrayUsingSelector:@selector(compare:)];
NSArray * sortedSections = [sections objectsForKeys:sortedKeys notFoundMarker:@""];

NSLog(@"%@", sortedSections);

关于iphone - 算法:Cocoa Touch 中的数组数组(可能使用 NSCountedSet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com