2009-06-04 68 views
1

填寫的NSMutableArray我有兩個類indexViewControllerflashCardQuestionViewController從其他的NSMutableArray

indexViewController我有填充有數組表。

現在我從數據庫中獲取的一些數據:

-(void)getMultipleChoiceAnswer 
{ 
    if(optionid!=nil) 
     [optionid removeAllObjects]; 
    else 
     optionid = [[NSMutableArray alloc] init]; 

    if(optionText!=nil) 
     [optionText removeAllObjects]; 
    else 
     optionText = [[NSMutableArray alloc] init]; 

    clsDatabase *clsDatabaseObject = [[clsDatabase alloc] init]; 
    sqlite3_stmt *dataRows = [clsDatabaseObject getDataset:"select optionID,OptionText from flashCardMultipleAnswer where questionId=1"]; 
    while(sqlite3_step(dataRows) == SQLITE_ROW) 
    { 
     [optionid addObject:[NSNumber numberWithInt:sqlite3_column_int(dataRows,0)]]; 
     [optionText addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(dataRows,1)]]; 
    } 

    sqlite3_finalize(dataRows); 
    [clsDatabaseObject release]; 
} 

和我打電話的indexViewControllerviewDidLoad方法這個方法。

現在我在另一個NSMutableArrayflashCardQuestionViewController名爲listNoOfOptionsInQuestion

我想填寫listNoOfOptionsInQuestion與對象optionText陣列在indexViewController

我該怎麼做?

回答

4

有許多的方法可以複製數組:您可以使用 - [NSArray的副本]得到一個不可改變的副本,或者 - [NSArray的mutableCopy]對一個可變的副本。不要忘記,副本添加了一個引用,所以你需要在某處發佈或autorelease(如果你不使用GC)。

或者,你可以使用 - [NSMutableArray的addObjectsFromArray:]。

鑑於您的例子,它看起來像你想在年底做這樣的事情:

[flashCardQuestionViewController setListNoOfOptionsInQuestion:optionText]; 

然後在FlashCardQuestionViewController,你想要的東西,如:

- (void)setListNoOfOptionsInQuestion:(NSArray *)options 
{ 
    if (options != listNoOfOptionsInQuestion) { 
    [listNoOfOptionsInQuestion release]; 
    listNoOfOptionsInQuestion = [options mutableCopy]; 
    } 
} 
+0

這不幹活兼得的NSMutableArray在 – 2009-06-04 07:01:45

1

拉胡爾,

你真的需要有一個完全不同的MutableArray的副本中的每個對象。兩個對象是否可以指向相同的數組?例如:

ClassOne *one = [[ClassOne alloc] init]; 
ClassTwo *two = [[ClassTwo alloc] init]; 

// build mutable array mArray 
// ... 

one.objectArray = mArray; 
two.objectArray = mArray; 

或者您是否需要以不同的方式更改兩個數組?該試試這個(由克里斯以上建議):

ClassOne *one = [[ClassOne alloc] init]; 
ClassTwo *two = [[ClassTwo alloc] init]; 

// build mutable array mArray 
// ... 

one.objectArray = mArray; 
two.objectArray = [mArray mutableCopy]; 

再次,如果這不是你所需要的,那麼你就必須給我們一個更精確的問題或問題,我們可以識別。