2014-07-17 2 views
0

У меня есть массив внутри моего метода init, а затем я хочу сделать изменяемый массив внутри, если условие, когда оно действительно необходимо. Является ли это возможным?Создание NSArray a NSMutableArray внутри условия if

В настоящее время я делаю:

- (id)init 
{ 
    self = [super init]; 

    if (self) 
    { 
     // [MyClass someMethod] in the below statement returns an array. 
     NSMutableArray *someArray = [NSMutableArray arrayWithArray:[MyClass someMethod]]; 

     if (this condition is true) 
     { 
      [someArray addObject:@"XYZ"]; 
     } 

    // Print someArray here. 
    } 
} 

То, что я пытаюсь сделать это:

- (id)init 
    { 
     self = [super init]; 

     if (self) 
     { 
      // [MyClass someMethod] in the below statement returns an array. 
      NSArray *someArray = @[[MyClass someMethod]]; 

      if (this condition is true) 
      { 
       // Make some array mutable here and then add an object to it. 
       [someArray mutableCopy]; 
       [someArray addObject:@"XYZ"]; 
      } 

     // Print someArray here. 
     } 
    } 

Могу ли я делать это правильно? Или это то, что я думаю возможным? Могу ли я сделать тот же массив изменчивым, когда это необходимо, поскольку в моем случае мне нужно, чтобы он изменялся, только если мое условие в if истинно.

+0

Возможно создание изменчивого массива из неперемещаемого массива, но что вы делаете с изменяемым массивом впоследствии? – trojanfoe

ответ

1

Вы должны изменить код, если условие:

if (this condition is true) 
{ 
    // Make some array mutable here and then add an object to it. 
    NSMutableArray *mutableArray = [someArray mutableCopy]; 
    [mutableArray addObject:@"XYZ"]; 
    someArray = mutableArray.copy; 
} 
+0

Добавить someArray = mutableArray; –

+0

Готово. Но немного по-другому. –

+0

Интересно, почему вы вызываете метод копирования в последней строке. 'NSMutableArray' наследует от' NSArray', поэтому копирующий объект не нужен. – Szu

0

Как об этом?

{ 
    NSArray *array; 
    if(condition) 
    { 
    NSMutableArray *mutaArray = [NSMutableArray arrayWithArray:[MyClass someMethod]]; 
    [mutaArray addObject:@"XYZ"]; 
    array=mutaArray; 
    } 
    else 
    array=[MyClass someMethod]; 

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