如何将 NSMutableDictionary setObject 值分配为 indexPath.section 值?
Posted
技术标签:
【中文标题】如何将 NSMutableDictionary setObject 值分配为 indexPath.section 值?【英文标题】:How to assign NSMutableDictionary setObject value to become indexPath.section value? 【发布时间】:2018-07-26 07:33:18 【问题描述】:我有 NSMutableDictionary 并返回结果如下:-
NSMutableDictionary *result = [NSMutableDictionary new];
distinctNames = [_aryClippedCategoryList valueForKeyPath:@"@distinctUnionOfObjects.category_id"];
for (NSString *category_id in distinctNames)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category_id = %@", category_id];
NSArray *category_group = [_aryClippedCategoryList filteredArrayUsingPredicate:predicate];
[result setObject:category_group forKey:category_id];
NSLog(@"123 - %@", result);
NSLog(@"223 - %lu", (unsigned long)distinctNames.count);
在 NSLog 123 中,结果将如下所示:-
17 = (
"category_id" = 17;
"category_name" = "Apparel & Accessories";
"sub_category_id" = 17;
"sub_category_name" = "Fashion jewelry";
,
"category_id" = 17;
"category_name" = "Apparel & Accessories";
"sub_category_id" = 16;
"sub_category_name" = Wholesale;
);
20 = (
"category_id" = 20;
"category_name" = "Beauty & Personal Care";
"sub_category_id" = 288;
"sub_category_name" = "Pedicure & medicure";
,
"category_id" = 20;
"category_name" = "Beauty & Personal Care";
"sub_category_id" = 285;
"sub_category_name" = "Fragrances and perfumes";
);
在 NSLog 223 中,结果将如下所示:-
223 - 2
在这种情况下,如何在 CollectionView 中选择 category_group 作为部分值,并在 CollectionView 单元格中显示每组项目(category_id、category_name、sub_category_id、sub_category_name)?
【问题讨论】:
【参考方案1】:(不推荐)你应该使用 NSMutableArray 而不是 NSMutableDictionary。
结构是
Array<Dictionary<Array *> *> *
代码是这样的
NSMutableArray *groups = [NSMutableArray new];
<# your code #>
[groups addObject:@
@"category_id": category_id,
@"infos": category_group
];
然后
NSString *groupID = groups[indexPath.section][@"category_id"]
这是部分所需的组值。
NSArray *infos = groups[indexPath.section][@"infos"];
NSDictionary *info = infos[indexPath.item];
这是对象 dict
项目的值
(推荐)或将您的data
转换为object
。 (对象NSMutableArray<Object *> *
)
然后使用groups.count
获取部分。
groups[indexPath.section].categoryID
这是sections
所需的组值。
group = groups[indexPath.section]
object = group.infos[indexPath.item]
这是items
的对象值
【讨论】:
嗨@Frank,感谢您的详细解释。但是我卡在- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
如果section 值为groups.count,我怎么能传入numberOfItemInSection?
group.infos.count
这就是您需要的物品。我只是犯了一些错误。 srr。
groups.count
代表numberOfSectionsInCollectionView
【参考方案2】:
如果你像这样使用 NSLog:
NSLog(@"123 - %@", result);
NSLog(@"223 - %lu", (unsigned long)distinctNames.count);
您明确要求它是一个字符串值,并且不会计算任何方程。
如果你想将结果打印为整数,你必须这样做:
NSLog(@"%@", 123 - result);
NSLog(@"%lu", 223 - (unsigned long)distinctNames.count);
第一个参数是字符串格式,下一个参数将用于替换此字符串中的%
。所以你的计算必须在右边进行。
为了让它更加明显,最好是在 NSLog 之前创建带有结果的局部变量。
【讨论】:
嗨@grzegorz,感谢您的回复。实际上我关心的是如何将上面提到的对象“category_group”设置为section。目前我在 numberOfItemsInSection 和 numberOfSectionsInCollectionView 中遇到错误,因为我不知道如何为其赋值。以上是关于如何将 NSMutableDictionary setObject 值分配为 indexPath.section 值?的主要内容,如果未能解决你的问题,请参考以下文章
如何将字段添加到 NSMutableDictionary Swift [重复]
如何将 NSMutableDictionary setObject 值分配为 indexPath.section 值?
如何使用键将对象添加到 NSMutableDictionary?
如何在 NSMutableDictionary 中保留部分分数