错误 fmdb 设置 label.text
Posted
技术标签:
【中文标题】错误 fmdb 设置 label.text【英文标题】:error fmdb set label.text 【发布时间】:2013-01-05 14:10:31 【问题描述】:我正在使用下面的代码创建一个表。我在 label.text = rs[colNum++];
收到此错误 [__NSCFNumber isEqualToString:]: unrecognized selector sent to instance
我该如何解决?提前致谢。
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];
【问题讨论】:
它包含键/值对,基本上是每行的列名和该列的值。 那么它不是一个 NSString。 Uilabel 的 text 属性需要一个字符串。 【参考方案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
中输入的内容声明,但希望这能让您了解您可能会做什么。
【讨论】:
谢谢 Rob。太棒了。终于我可以看到数据了。我想问一下我是否像这样单独获取每个数据:NSString *id = [rs stringForColumn:@" ID”]; NSString *data = [rs stringForColumn:@"data"]; NSString *moreData = [rs stringForColumn:@"moreData"];标签.text = id; colNum++;标签.文本=数据; colNum++; label.text = 更多数据; [self.view addSubview:label]; x += [columnWidth floatValue]; BUt 它重复数据。我对此有更多的控制权。那么我该如何实现呢? 也许我们应该把它移到聊天中:chat.***.com/rooms/22239/… 不做这样的转换,你可以这样做:[label setText:[rs stringForColumn:colNum++]];
@DaveDeLong 也许,但是你无法控制price
字段的小数位数格式,或者你有什么。以上是关于错误 fmdb 设置 label.text的主要内容,如果未能解决你的问题,请参考以下文章