我正在尝试从我的模型对象(searchRecipeDetailsVariable
)的某个属性设置标签的文本,但是我收到错误
//Extract number of servings from dictionary and place in model
self.searchedRecipeDetailsVariable.numberOfServings = [self.detailedSearchYummlyRecipeResults objectForKey: @"numberOfServings"];
//log number of servings to check that it works
NSLog(@"Number of Servings, %@",self.searchedRecipeDetailsVariable.numberOfServings);
self.numberOfServingsLabel.text = self.searchedRecipeDetailsVariable.numberOfServings;
当我打印该值时,我可以正确看到该数字。但是,当我尝试设置numberOfServingsLabel.text
时,我收到错误:
- [__ NSCFNumber isEqualToString:]:无法识别的选择器发送到实例0x9028390
你可以想象,我不太清楚为什么。我已经尝试使用字符串直接设置文本,如下所示,这是有效的。
self.numberOfServingsLabel.text = @"500";
然后测试我实际上确实有一个我尝试过的字符串。这很好。
NSString *test = self.searchedRecipeDetailsVariable.numberOfServings;
NSLog(@"test numberof servings string, %@", test);
当我将鼠标悬停在test
上时,我打印了说明。我不知道它是否有用但它是:
打印测试说明:2
当我将鼠标悬停在它上面时,它确实说它是NSString *
,最后它有(int)2
。不确定这意味着什么。
答案 0 :(得分:4)
-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x9028390
就像在任何其他情况下一样,错误消息是描述问题的有意义的英语句子。它告诉您self.searchedRecipeDetailsVariable.numberOfServings
是NSNumber
。无论你将它声明为NSString
,因为Objective-C是动态类型的(对象的编译时类型声明只是为了给编译器提供提示,它可能与实际无关)。 / p>
您需要将其转换为字符串,可能使用NSNumberFormatter
(正确方式),或获取其描述(不建议使用,描述永远不会依赖)等。例如:< / p>
NSString *test = [NSString stringWithFormat:@"%d",
self.searchedRecipeDetailsVariable.numberOfServings.intValue];