2017-02-06 6 views
2

Я создаю 5 целочисленные переменные для хранения 5 различных значений в Objective C. Для Ex: INTA, INTB и т.д.Ios - Сохранение нескольких значений в одной переменной

Ниже только пример кода:

Например:

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).

Просьба поделиться своим предложением и руководством.

ответ

1

Да, вы можете использовать NSMutableArray для этого. Однако Objective-C NSArray s немного странно, поскольку они могут содержать только объекты. Вы должны будете «коробки» в записи, как объекты NSNumber:

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

И тогда вы можете получить элемент из массива:

NSNumber *aNumber = numbers[0]; 

Но NSNumber объекты неизменны.

Вы можете использовать массив C-стиль:

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

Тогда можно сказать, что

numbers[0]++; 

Но со статически выделяемой массив C-стиле, вы не можете добавлять элементы в массив во время выполнения.

+0

Свифт очищает всю эту странность. Вы можете просто создать массив var int: 'var numbers = [1, 2, 3, 4, 5]' и добавить к нему числа, увеличить значения внутри массива и т. Д. –

1

Вы можете использовать NSMutableDictionary с ключами, являющимися вашими A - E здесь и целыми числами.

Таким образом, например, для добавления значений (5 сейчас и потенциально более в будущем) можно было бы написать:

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

Чтобы получить их:

[dict objectForKey:@"A"];

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 ... 
     } 
    } 
} 
+1

Objective-C, а не Swift – Sulthan

+0

Спасибо. Исправленный. – Kie

Смежные вопросы