iOS - 在一个变量中存储多个值

时间:2017-02-06 17:51:02

标签: ios objective-c

我正在创建5个整数变量来在Objective C中存储5个不同的值。例如:intA,intB等

以下是示例代码:

例如:

for (Desframe *obj in [myval allValues])
{
    if (obj.A>10.0) {
        myLabel.text = @"A";
        intA = intA++;
    }
    else if (obj.B>10.0) {
        myLabel1.text = @"B";
        intB = intB++;
    }
    else if (obj.C>10.0) {
        myLabe2.text = @"C";
        intC = intC++;
    }
    else if (obj.D>10.0) {
        myLabe3.text = @"D";
        intD = intD++;
    }
    else if (obj.E>10.0) {
        myLabe4.text = @"E";
        intE = intE++;
    }    
}

将来,我可能需要再增加2个变量。 我想知道如何避免创建5个不同的整数变量,但在一个变量中存储了5个不同的值。我应该使用数组吗? (或)如何专业地处理此代码?

但我希望在同一个类(.m)文件中全局访问此变量。

请分享您的建议和指导。

3 个答案:

答案 0 :(得分:1)

您可以使用NSMutableDictionary将密钥作为A - E,并将整数作为值。

这样,例如,要添加值(现在为5,将来可能更多),您可以写:

[dict setObject:@123 forKey:@"A"];

要检索它们:

[dict objectForKey:@"A"];

答案 1 :(得分:1)

是的,您可以使用NSMutableArray。但是,Objective-C NSArray有点奇怪,因为它们只能包含对象。你必须" box"作为NSNumber对象的条目:

NSMutableArray *numbers = @[@(1), @(2), @(3), @(4), @(5)];

然后你可以从数组中获取一个项目:

NSNumber *aNumber = numbers[0];

但NSNumber对象是不可变的。

您可能想要使用C风格的数组:

UInt64 numbers[] = [1, 2, 3, 4, 5];

然后你可以说

numbers[0]++;

但是使用静态分配的C风格数组,您无法在运行时向数组添加元素。

答案 2 :(得分:0)

您可以定义自己的结构。

struct MyStruct {
    int a;
    int b;
    int c;
    int d;
}

在课堂上使用这种新类型

@implementation MyClass {
    MyStruct example;

    // In your function
        for (Desframe *obj in [myval allValues])
        {
            if (obj.A>10.0) {
                myLabel.text = @"A";
                example.a += 1;
            }
                else if (obj.B>10.0) {
                myLabel1.text = @"B";
                example.b += 1;
            }

            // And so on ...
        }
    }
}