我正在一个for循环中创建一个label (CorePlot)对象,并试图将它添加到NSMutableSet中,这需要传递一个参数。
奇怪的是,如果将一个对象添加到NSMutableSet中(第一个对象),则没有添加其他对象。
看来我错过了一些最基本的东西。
有什么建议吗?
我附加了代码的屏幕截图,因为我想显示NSSet对象所持有的值。
图1-将对象添加到NSMutableArray,但不添加到从该数组形成的NSSet中。

图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中

图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;发布于 2015-04-10 11:57:56
用于isEqual方法的CPTAxisLabel文档说-
如果轴标签具有相同的tickLocation,则它们是相等的。
由于您没有为要添加的标签指定tickLocation属性,所以它们都将具有相同的tickLocation - 0。
由于isEqual对所有标签都返回true,所以您的NSSet中的第一个标签将被跳过,因为集合中已经有一个相等的对象。
https://stackoverflow.com/questions/29559664
复制相似问题