0

我使用可可绑定创建了一个 NSCollectionView。我发现当NSMutableArray设置为NSCollectionView的内容完成排序时,NSCollectionView没有任何变化。这是我的排序代码:

-(void)updateOrder
{

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

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

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

我可以捕捉到删除的变化和插入的变化,但我无法捕捉到重新排序的变化。为什么?

4

1 回答 1

1

此代码实际上不会更改顺序。sortedArrayUsingComparator:返回一个全新的数组。它不会对现有数组进行排序。排序操作被有效地丢弃了——_bookmarksArray永远不会改变。例如,您可以将其更改为:

-(void)updateOrder
{

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

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

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

(假设这里是 ARC。同样的想法,但如果不是 ARC ,则使用适当的retain/调用。)release

于 2013-07-19T13:52:05.187 回答