我正在使用以下代码创建一个表。我在<}处收到此错误[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance
label.text = rs[colNum++];
我该如何解决?在此先感谢。
NSInteger rowNum = 0;
NSArray *columnWidths = @[@(50), @(120), @(75), @(75)];
CGFloat rowHeight = 24.0;
FMResultSet *rs = [db executeQuery:sql];
while ([rs next])
{
CGFloat x = 0.0;
NSInteger colNum = 0;
for (NSNumber *columnWidth in columnWidths)
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x,
rowHeight * rowNum,
[columnWidth floatValue],
rowHeight)];
label.textAlignment = NSTextAlignmentCenter;
label.layer.borderColor = [UIColor blackColor].CGColor;
label.layer.borderWidth = 1.0;
label.text = rs[colNum++];
[self.view addSubview:label];
x += [columnWidth floatValue];
}
rowNum++;
}
[rs close];
答案 0 :(得分:1)
问题是结果集中的某些列不是文本值。我记得你的other question来自rowid
,其中一列是label.text = rs[colNum++];
,你有一些文本列,然后你有一些数字列。所以而不是:
id value = rs[colNum];
if ([[rs columnNameForIndex:colNum] isEqualToString:@"rowid"])
label.text = [NSString stringWithFormat:@"%d", [value intValue]];
else if ([value isKindOfClass:[NSString class]])
label.text = value;
else if ([value isKindOfClass:[NSNumber class]])
{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.maximumFractionDigits = 2;
formatter.numberStyle = NSNumberFormatterDecimalStyle;
label.text = [formatter stringFromNumber:value]];
}
else
label.text = [value description];
colNum++;
你应该有类似的东西:
rowid
显然,您的逻辑将根据您的结果集中是否有sql
列,或者您想要多少个小数点来改变,等等。这一切都取决于您在{ {1}}声明,但希望这可以让您了解自己可能会做些什么。