2009-12-22 5 views
1

배열 개체가 포함 된 배열이 있습니다. 배열의 배열. 설명 메서드를 Array에 적용하면 내부 배열에 데이터가 표시되지 않습니다. 배열 1 포함 : 예상대로NSMutableArray 설명 메서드 - 배열 배열

[runScoreDataArray addObject:[NSString stringWithString:currentUser]]; 
[runScoreDataArray addObject:[NSNumber numberWithDouble:mainScores.scoreTotal]]; 

NSLog(@"Array1 contains: %@", [runScoreDataArray description]); 

// Now add the array runScoreDataArray to the Array highScoresArray 
[highScoresArray addObject: runScoreDataArray]; 

// Empty the runScoresData Array after each run. 
[runScoreDataArray removeAllObjects]; 

NSLog(@"Array2 contains: %@", [highScoresArray description]); 

runScoresDataArray의 NSLog 인쇄물 읽 (USER1,34500)

highScoresArray의 NSLog 읽 배열 2 포함 (() (여기서, 코드는),())

빈 대괄호 대신 NSLog 출력물에 각 배열 요소에 대한 데이터가 표시 될 것으로 예상했습니다.

질문 : 설명 배열을 사용하여 배열 배열의 내용을 인쇄 할 수 있습니까?

+0

빠른 질문 : Objective-C 배열은 참조 유형 또는 값 유형입니까? –

+0

여기에서 사용되는 배열은 NSMutableArrays이며 인스턴스는 참조입니다. Obj-C는 C 스타일 배열도 지원합니다. 그러나 메시지가 전송되기 때문에 여기에서는 일어나지 않습니다. –

+0

OP 답장을 받기를 바랍니다. 간단한 질문에 답하는 행위는 코드의 버그를 분명하게 해줍니다. –

답변

6

당신은 -addObject:runScoreDataArrayhighScoresArray에, 그것이 상위 배열의 실제 runScoreDataArray에 대한 참조를 추가하는 것, 배열의 값을 복사 아닙니다.

그럼 -removeAllObjects으로 runScoreDataArray을 삭제하면 highScoresArray 내부의 참조에도 영향을 미칩니다.

[highScoresArray addObject: [NSArray arrayWithArray:runScoreDataArray]]; 

이 얕은 복사본을 삽입 :

당신이 계신에 따라, 당신이 뭔가 같이 할 수 있습니다.