gpt4 book ai didi

ios - 错误 fmdb 设置 label.text

转载 作者:行者123 更新时间:2023-11-29 13:21:55 25 4
gpt4 key购买 nike

我正在使用下面的代码创建一个表。我收到此错误 [__NSCFNumber isEqualToString:]: unrecognized selector sent to instance at
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];

最佳答案

问题是结果集中的某些列不是文本值。我记得你的 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 列,或者您希望 float 有多少小数位等而改变。这一切都取决于您输入的内容在 sql 语句中,但希望这能让您了解您可以做什么。

关于ios - 错误 fmdb 设置 label.text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172559/

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