2014-07-17 24 views
0

我的init方法中有一個數組,然後我希望在需要的時候創建一個可變數組。可能嗎?在一個if條件中使NSArray成爲一個NSMutableArray

目前正在做的:

- (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]; 

} 
相關問題