【问题标题】:Noob at Xcode and Objective C, trying to understand global variables, and switch statementXcode 和 Objective C 的菜鸟,试图理解全局变量和 switch 语句
【发布时间】:2010-09-19 12:39:26
【问题描述】:

我是新手,所以请原谅我可能很简单的问题。希望你能很容易地帮助我!我正在制作一个应用程序,它使用 4 个变量来计算推荐给用户的水量。这个 switch 语句的问题在于,无论我将 age 设置为什么值,它总是执行最后一种情况。这是为什么呢?

另外,由于我的变量都是从不同的(IBAction)方法获得的,是否需要将它们定义为全局变量?我该怎么做呢?

请帮忙!

非常感谢:)

-(IBAction) updatePrefs:(id) sender
{

    switch (age){
     case 1:
         RWI = 1;
         Output.text = [NSString stringWithFormat:@"You should drink 1 litre a day"];
     case 2: 
         Output.text = [NSString stringWithFormat:@"You should drink 1.5 litres a day"];
     case 3:
         RWI = (weightkg * weightpounds * activity);
         Output.text = [NSString stringWithFormat:@"You should drink 2 litres a day"];
         break;
     default:   
         break;
}

【问题讨论】:

  • 年龄变量从何而来?是财产吗?你有@synthesize 吗?
  • 不,我刚刚在我的 .h 类文件中声明了它 @implementation AppPrefsViewController int age; UILabel *输出;它后来在另一个方法中给出了一个值
  • 为什么你使用[NSString stringWithFormat:@"You should drink 1 litre a day"]而不是@"You should drink 1 litre a day"

标签: xcode variables global switch-statement


【解决方案1】:

我错过了一些你必须在每个 case 语句之后插入 break 的 break 语句。

你的代码应该是这样的:

switch (age){

    case 1: RWI = 1; 
        Output.text = [NSString stringWithFormat:@"You should drink 1 litre a day"]; 
        break;
    case 2: 
        Output.text = [NSString stringWithFormat:@"You should drink 1.5 litres a day"]; 
        break;
    case 3: RWI = (weightkg * weightpounds * activity); 
        Output.text = [NSString stringWithFormat:@"You should drink 2 litres a day"]; 
        break; 
    default:
    break; 
}

【讨论】:

    【解决方案2】:

    放一个

    休息;

    在每个 case 语句块的末尾。没有休息;您的代码执行路径只是通过每个 case 语句集,最终您的 var 被分配了 switch 语句中的最后一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2019-03-02
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多