gpt4 book ai didi

ios - NSMutableSet 不添加超过 1 个对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:01:35 26 4
gpt4 key购买 nike

我正在 for 循环中创建一个标签 (CorePlot) 对象,并尝试将其添加到我需要传递一个参数的 NSMutableSet。

奇怪的是,只有一个对象被添加到 NSMutableSet(第一个)而其他对象没有被添加。

看来我缺少一些非常基本的东西。

有什么建议吗?

我附上了代码的屏幕截图,因为我想显示 NSSet 对象所持有的值。

图 1 - 对象被添加到 NSMutableArray 而不是从该数组形成的 NSSet

Objects gets added to NSMutableArray but not to NSSet Forming From that array

图 1 中使用的代码 -

    NSArray *months = [NSArray arrayWithObjects:@"Oct",@"Nov",@"Dec",@"Jan",@"Feb",nil];
NSMutableArray *xLabels = [[NSMutableArray alloc] init];
for (NSString *month in months) {
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:month textStyle:axisTextStyle];
[xLabels addObject:label];
}
NSSet *xLabelSet = [NSSet setWithArray:xLabels];
x.axisLabels = xLabelSet;

图 2 - 对象没有被添加到 NSMutableSet Objects not getting added to NSMutableSet

图 2 中使用的代码 -

    NSArray *months = [NSArray arrayWithObjects:@"Oct",@"Nov",@"Dec",@"Jan",@"Feb",nil];
//NSMutableArray *xLabels = [[NSMutableArray alloc] init];
NSMutableSet *xLabelSet = [[NSMutableSet alloc] initWithCapacity:[months count]];
for (NSString *month in months) {
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:month textStyle:axisTextStyle];
[xLabelSet addObject:label];
}
//NSSet *xLabelSet = [NSSet setWithArray:xLabels];
x.axisLabels = xLabelSet;

最佳答案

CPTAxisLabel 的 isEqual 方法的文档说 -

Axis labels are equal if they have the same tickLocation.

由于您没有为要添加的标签指定 tickLocation 属性,因此它们都将具有相同的 tickLocation - 0。

由于 isEqual 对所有标签都返回 true,因此您最终只会得到 NSSet 中的第一个 - 添加后续标签将作为相等对象跳过已经在集合中了。

关于ios - NSMutableSet 不添加超过 1 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29559664/

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