2013-07-19 3 views
0

코코아 바인딩을 사용하여 NSCollectionView를 만듭니다. NSCollectionView의 내용으로 설정된 NSMutableArray이 정렬이 완료되면 NSCollectionView에는 변경 사항이 없습니다. 여기 내 정렬 코드 :NSCollectionView 재로드 데이터를 만드는 방법은 무엇입니까?

-(void)updateOrder 
{ 

    [self willChangeValueForKey:@"bookmarksArray"]; 
    [_bookmarksArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 

    /** 
    Here is the sort code. 
    **/ 

    }]; 
    [self didChangeValueForKey:@"bookmarksArray"]; 
} 

내가 제거 변화와 삽입의 변화를 잡을 수 있습니다,하지만 난 재주문 change.Why를 잡을 수없는 이유는 무엇입니까?

답변

1

이 코드는 실제로 주문을 변경하지 않습니다. sortedArrayUsingComparator:은 완전히 새로운 배열을 반환합니다. 기존 배열을 제 위치에서 정렬하지 않습니다. 정렬 작업은 효과적으로 폐기됩니다. _bookmarksArray은 절대로 변경되지 않습니다. (. 여기에 가정 ARC 같은 생각을하지만 적절한 retain/release 호출하지 않을 경우 ARC와.)

-(void)updateOrder 
{ 

    [self willChangeValueForKey:@"bookmarksArray"]; 
    _bookmarksArray = [_bookmarksArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 

    /** 
    Here is the sort code. 
    **/ 

    }]; 
    [self didChangeValueForKey:@"bookmarksArray"]; 
} 

+0

문제가 있었다은 풀리가 NSSortDescriptor를 사용하고있다 : 당신은, 예를 들어, 그것을 변경할 수 있습니다. 나는 당신의 방법을 시도해.하지만 당신의 방법은 여전히 ​​원래의 문제와 같은 결과입니다. – gohamgx

+0

"기존 어레이를 제자리에 정렬하지 않는다"고 말한 바에 따르면 그 대답이라고 생각합니다. – gohamgx

관련 문제