相关疑难解决方法(0)

Objective-C中的常量

我正在开发一个Cocoa应用程序,并且我使用常量NSStrings作为存储我的首选项的键名的方法.

我知道这是一个好主意,因为它可以在必要时轻松更改密钥.此外,它是整个'将您的数据与逻辑分离'的概念.

无论如何,是否有一种很好的方法可以为整个应用程序定义一次这些常量?我确信这是一种简单而聪明的方式,但是现在我的课程只是重新定义了他们使用的课程.

cocoa constants objective-c

996
推荐指数
13
解决办法
42万
查看次数

整数常量'不会减少为整数'

我用这段代码设置我的常量

// Constants.h
extern NSInteger const KNameIndex;

// Constants.m
NSInteger const KNameIndex = 0;
Run Code Online (Sandbox Code Playgroud)

在导入Constant.h文件的文件中的switch语句中,我有:

switch (self.sectionFromParentTable) {
    case KNameIndex:
        self.types = self.facilityTypes;
        break;
    ...
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到错误:"错误:case标签不会减少为整数常量"

什么想法可能搞砸了?

objective-c

17
推荐指数
3
解决办法
2万
查看次数

为什么我不能在Objective-C中的switch-case语句中使用我的常量?[error = Expression不是整数常量表达式]

所以我在Objective-C的以下switch语句中使用常量变量时​​遇到问题.

我有以下Constants.h:

// Constants.h    
extern NSInteger const TXT_NAME;
Run Code Online (Sandbox Code Playgroud)

Constants.m为:

// Constants.m
#import "Constants.h"

NSInteger const TXT_NAME        = 1;
Run Code Online (Sandbox Code Playgroud)

然后在TabBasic.m中我试图在switch-case语句中使用这个常量:

// TabBasic.m

#import "TabBasic.h"
#import "Constants.h"

... code ...

- (IBAction)saveValue:(id)sender {
    if ([sender isKindOfClass: [UITextField class]]) {
        UITextField *txtField = (UITextField *) sender;

        switch (txtField.tag) {
            case TXT_NAME:
                NSLog(@"Set property name to: %@", txtField.text); 
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它在"案例TXT_NAME:"行中给了我以下两个错误:

  • 表达式不是整数常量表达式
  • 案例标签不会减少为整数常量

有谁知道我做错了什么?UITextField的"tag"变量返回一个NSInteger,所以我没有看到问题......

谢谢你的帮助!

tags constants case objective-c switch-statement

14
推荐指数
2
解决办法
1万
查看次数

表达式不是iOS目标c中的整数常量表达式

我想使用以下表达式

-(void)SwitchCondn{
    int expression;
    int match1=0;
    int match2=1;

    switch (expression)

    {
        case match1:

            //statements

            break;

        case match2:

            //statements

            break;

        default:

           // statements

            break;

    }
Run Code Online (Sandbox Code Playgroud)

但是我得到了

在此输入图像描述

当我研究我发现

In order to work in Objective-C, you should define your constant either like this:
#define TXT_NAME 1
Or even better, like this:
enum {TXT_NAME = 1};
Run Code Online (Sandbox Code Playgroud)

我很久以来一直在使用这种方法.现在我的变量值将在运行时改变,所以我需要以其他方式定义,我不想使用if else所以有任何方式的声明变量其他方式

我接受了以下研究

为什么我不能在Objective-C中的switch-case语句中使用我的常量?[error = Expression不是整数常量表达式]

Objective C switch语句和命名整数常量

Objective C具有case/switch的全局常量

整数常量'不会减少为整数'

objective-c switch-statement ios

4
推荐指数
2
解决办法
7180
查看次数

标签 统计

objective-c ×4

constants ×2

switch-statement ×2

case ×1

cocoa ×1

ios ×1

tags ×1