2013-07-19 142 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

相关问题