【发布时间】:2015-04-10 10:56:01
【问题描述】:
我在 for 循环中创建一个标签 (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;
【问题讨论】:
-
类是否实现了
isEqual和hash? -
以后您也可以粘贴这些值。从图像中复制和粘贴代码很困难。
-
在第一个代码中,您根本没有使用 xLabels。在第二个代码中,您使用 [[NSMutableSet alloc] initWithCapacity:[month count]] 进行初始化,接下来将其分配给 x.axisLabels。
-
@Wain - 是的。签入框架的源文件。这是课程 - core-plot.googlecode.com/hg/documentation/html/iOS/…
-
@LajosArpad - 很抱歉。将发布代码。回答你的问题......在第一个代码中,我在第 195 行将对象添加到 xLabels (NSMutableArray),并尝试在第 197 行从 xLabels 创建 NSSet (xLabelSet)。在第二个代码中,我在第 196 行将对象添加到 xLabelSet。
标签: ios core-plot nsmutableset