Возможно ли ссылаться на переменную с помощью строки и int?

#iphone #objective-c #string #reference #int

#iPhone #objective-c #строка #ссылка #int

Вопрос:

Возможно ли ссылаться на переменную со строкой и int, например:

     int number1;

    int j = 1;

    @"number%i", j = 3; //Hope this makes sense..
  

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

Я тоже пробовал это, но это не работает (по вполне очевидным причинам):

     int j = 1;

    NSString *refString = [NSString stringWithFormat:@"number%i", j];

    refString = 3;
  

Я действительно борюсь с этим, я знаю, как это сделать в Javascript, но не в Obj-C, возможно ли это?

Комментарии:

1. Что вы на самом деле пытаетесь сделать?

2. Вы хотите преобразовать целое число в строку? Кроме того, regString имеет тип NSString* , которому не могут быть присвоены целые константы, подобные 3 .

3. На самом деле я написал в круглых скобках прямо рядом с заголовком кода, о котором вы говорите: «но это не работает (по вполне очевидным причинам)»

Ответ №1:

Это антишаблон, который я называю массивом бедняка. Лучший способ сделать это — использовать надлежащую коллекцию, такую как массив, вместо набора переменных, которые тайно связаны. Если все сделано правильно, код с массивом обычно будет намного короче и чище.

Комментарии:

1. Да, я думаю, я сделаю это с массивом, изначально я пытался быть супернастраиваемым с пользовательской настройкой «array», но я понимаю, что это просто стало бы беспорядочным.

2. Или просто создайте простой класс, чтобы избежать «массива с магическими индексами».

Ответ №2:

Из того, что я могу сделать вывод, вы пытаетесь установить / извлечь разные переменные на основе значения j .

Вы могли бы использовать словарь для этой цели:

 NSMutableDictionary *numbers = [NSMutableDictionary dictionary];
int j = 1;
[numbers setObject:[NSNumber numberWithInt:3] forKey:[NSNumber numberWithInt:j]];
  

А затем извлекать:

 [[numbers objectForKey:[NSNumber numberWithInt:j]] intValue];
  

Это немного многословно, но вы могли бы упростить его, создав небольшой класс.

Комментарии:

1. Это было бы то же самое, что использовать NSArray, он может содержать только объекты NS / UI.. так что это не очень помогло бы … в любом случае, спасибо