使用Xcode V11.3.1,并使用Objective-C构建iPhone应用。我有一个名为CWCompany的对象,其中包含以下字段;
@property (nonatomic,strong) NSString *companyID;
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *type;
@property (nonatomic,strong) NSString *addressLine1;
@property (nonatomic,strong) NSString *addressLine2;
@property (nonatomic,strong) NSString *city;
@property (nonatomic,strong) NSString *state;
@property (nonatomic,strong) NSString *zip;
@property (nonatomic,strong) NSString *country;
我从sqllite表填充,然后尝试在UIView中的UITableView中显示。但是,在尝试为公司ID填充单元格内的UITextField时,它崩溃并告诉我它是__NSCFNumber。我收到“-[__ NSCFNumber isEqualToString:]:无法识别的选择器发送到实例”。顺便说一句,它也作为字符串存储在sqllite表中。这是我用来在表格单元格中填充UITextField的代码。
if (_company) {
switch (indexPath.row)
{
case 0:
cell = [tableView dequeueReusableCellWithIdentifier:@"rightDetailCell" forIndexPath:indexPath];
cell.textLabel.text = @"ID";
if (_company) {
cell.detailTextLabel.text = self.company.companyID;
}else{
cell.detailTextLabel.text = @"";
}
break;
目前,我有一种解决方法,只需使用stringWithFormatcell.detailTextLabel.text = [NSString stringWithFormat:@"%@",self.company.companyID];
可以正常工作,但是我很好奇理解为什么将此字符串字段解释为__NSCFNumber。感谢任何建议。谢谢。
确定,找到发生这种情况的原因。为了填充公司,我使用API调用,然后解码json响应。响应中的CustomerID是数字类型(没有引号),因此,即使我将其放入字符串类型的object字段中,也仍将其视为数字。通过将对象字段更改为NSNumber以匹配源已解决,因此我不得不对其进行适当处理。
感谢vadian建议我向后搜索以找出问题所在。欢呼声