2013-07-19 72 views
0

我使用cocoa binding創建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

問題一直solved.I使用NSSortDescriptor。我嘗試了你的方法,但是你的方法與我原來的問題仍然是一樣的結果。 – gohamgx

+0

根據你所說的「它不排序現有的陣列」,我認爲這是答案。 – gohamgx

相關問題