2016-01-28 101 views
0

我試圖調用另一個類的方法,而且看起來無法使其工作。嘗試從其他線程的建議,但即使在似乎只是拋出相同的錯誤。語言是Objective C的 來源爲Meal.h沒有可見的@interface用於聲明選擇器calculatetip

@interface Meal : NSObject 
- (float)CalculateTip:(float)MealCost secondValue:(float)SelectedValue; 

@end 

來源爲Meal.m

#import "Meal.h" 

@implementation Meal 
- (float) CalculateTip:(float)MealCost secondValue:(float)SelectedValue 
{ 
float finalVal = 0; 
float tipval = 0; 
if (SelectedValue == 0) 
{ 
    tipval = .1; 
} 
else if (SelectedValue == 1) 
{ 
    tipval = .15; 
} 
else if (SelectedValue == 2) 
{ 
    tipval = .2; 
} 
finalVal = MealCost*tipval; 
return finalVal; 
} 

@end 

在視圖控制器類

​​

導入語句調用方法 Meal *meal = [[Meal alloc] init];

這是錯誤的地方[R出現「膳食無可見@interface聲明選擇calculatetip」

float finalFloat = [meal CalculateTip:MealCostFloat:select]; 
+2

將您的方法命名爲小寫,參數相同。 '[用餐CalculateTip:MealCostFloat secondValue:select];'?也不要導入「Meal.m」。 – Larme

+0

你已經發布了一堆代碼並在標題中引用了一個假錯誤。請更新您的問題,指出您發現錯誤的位置,併發布真實,實際和完整的錯誤消息。 – rmaddy

+0

並重申,不要導入.m文件。這是不對的。 – rmaddy

回答

0

你已經宣佈了一個名爲​​方法。

但你嘗試稱其爲:

[meal CalculateTip:MealCostFloat:select]; 

它需要是這樣的:

[mean CalculateTip:firstValue secondValue:theOtherValue]; 

其中firstValuetheOtherValue有兩個變量或常量,你需要傳遞給方法。

也許你的兩個值是MealCostFloatselect。很難說。

[mean CalculateTip:MealCostFloat secondValue:select]; 

而且,正如評論中提到的那樣,標準命名約定是方法和變量名以小寫字母開頭。類名以大寫字母開頭。

而且不要導入.m文件,只是.h文件。

最後一件事。鑑於您如何使用SelectedValue參數的值,我建議將其類型從float更改爲int

- (float)calculateTip:(float)mealCost secondValue:(int)selectedValue 
{ 
    float tipval = 0; 
    if (selectedValue == 0) 
    { 
     tipval = .1; 
    } 
    else if (selectedValue == 1) 
    { 
     tipval = .15; 
    } 
    else if (selectedValue == 2) 
    { 
     tipval = .2; 
    } 

    float finalVal = mealCost * tipval; 

    return finalVal; 
} 
相關問題