gpt4 book ai didi

ios - 我如何从嵌套的 NSMutableDictionary 中获取 numberOfRowsInSection?

转载 作者:行者123 更新时间:2023-11-29 01:51:00 25 4
gpt4 key购买 nike

我正在尝试关注这篇文章 http://www.appcoda.com/ios-programming-index-list-uitableview/使用 UITableViewController 创建部分。

我正在使用两个 NSMutableDictionaries,第一个(_curatedItemDictionary)字典用于存储来自 Parse 的键值对,第二个(_sectionsDictionary)用于存储这些在字典中作为键和值作为类别类型。

 [_sectionsDictionary setObject:[obj objectForKey:@"Category"] forKey:_curatedItemDictionary];

我这样做是因为我无法将键存储为类别,将值存储为字典,因为字典不支持重复键。

我正在使用下面的代码获取 numberOfSectionsInTableView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
for(NSString *key in [_sectionsDictionary allKeys]) {
[_cleanArray addObject:[_sectionsDictionary objectForKey:key]];
}
NSCountedSet *set = [[NSCountedSet alloc] initWithArray:_cleanArray];
for (id item in set) {
NSInteger count = (unsigned long)[set countForObject:item];
[_rowForIndexArray addObject:[NSNumber numberWithInteger:count]];
}
_cleanSectionArray = [[NSSet setWithArray:_cleanArray] allObjects];
return [_cleanSectionArray count];
}

如何从上述信息中获取 numberOfRowsInSection?我如何知道特定部分正在迭代哪些项目?

这是我用来从 Parse.com 数据创建 curatedItemDictionary 的代码

PFQuery *query  = [PFQuery queryWithClassName:[NSString stringWithString:self.classname]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.

for (PFObject *obj in objects) {

self.curatedItemDictionary = [[NSMutableDictionary alloc]init];


[_curatedItemDictionary setValue:[obj objectForKey:@"ItemName"] forKey:@"ItemName"];
[_curatedItemDictionary setValue:[obj objectForKey:@"Price"] forKey:@"Price"];


[_sectionsDictionary setObject:[obj objectForKey:@"Category"] forKey:_curatedItemDictionary];


[self.tableView reloadData];
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];

最佳答案

根据对原始帖子的评论中提供的代码,与此类似,只是一个替代方案:

self.sectionsDictionary = [NSMutableDictionary new];
NSMutableArray *sectionsArray;

for (PFObject *obj in objects) {
sectionsArray = [self.sectionsDictionary objectForKey: [obj objectForKey:@"Category"]];
if (nil == sectionsArray) sectionsArray = [NSMutableArray new];
[sectionsArray addObject: obj]
[self.sectionsDictionary setObject: sectionsArray forKey: [obj objectForKey:@"Category"]];
}

然后在您的 numberOfSectionsInTableView 中,您可以通过访问 NSMutableDictionary 上的 count 方法来获取部分的数量

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [self.sectionsDictionary count];
}

然后如果您需要每个特定部分的行数:

- (NSInteger) tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *keys = [self.sectionsDictionary allKeys];
id aKey = [keys objectAtIndex:section];
NSMutableArray *arr = [self.sectionsDictionary objectForKey:aKey];

return (arr) ? arr.count : 0;
}

当然,您可以在准备数据源时循环遍历 sectionsDictionary 中的键,并将部分索引与一些键放在一起,因此您不需要使用 allKeys 技巧。

关于ios - 我如何从嵌套的 NSMutableDictionary 中获取 numberOfRowsInSection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419405/

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