2013-04-28 43 views
0

我想從我的模型對象(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:]: unrecognized selector sent to instance 0x9028390

正如你可以想像,我也不太清楚爲什麼。我曾嘗試用字符串直接設置文本,如下所示,這可以起作用。

self.numberOfServingsLabel.text = @"500"; 

然後測試我其實有一個字符串,我嘗試了下面。這工作正常。

NSString *test = self.searchedRecipeDetailsVariable.numberOfServings; 
NSLog(@"test numberof servings string, %@", test); 

當我將鼠標懸停在test上時,我打印了說明。我不知道這是否是有用的,但它是:

Printing description of test: 2

當我將鼠標懸停在它,它說這是一個NSString *,並在年底有(int)2。不確定這意味着什麼。

回答

4
-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x9028390 

就像在其他任何情況下一樣,錯誤信息是描述問題的有意義的英語句子。它告訴你self.searchedRecipeDetailsVariable.numberOfServings是一個NSNumber。無論你將其聲明爲NSString,由於Objective-C是動態類型的(對象的編譯時類型聲明只是爲編譯器提供提示,它可能與現實無關)。

你需要將其轉換爲字符串,也許使用NSNumberFormatter(正確的方法),或得到其描述(這是不推薦,描述永不不足爲憑)等。例如:

NSString *test = [NSString stringWithFormat:@"%d", 
    self.searchedRecipeDetailsVariable.numberOfServings.intValue]; 
+0

謝謝。我已經嘗試過,這有效。想想我需要做一點關於這個的閱讀。 – Anthony 2013-04-28 13:24:52

相關問題