我有account
模型和client
模型。 account
有很多clients
。当我获取account
对象时,我希望所有client
个对象按给定NSSet
中的名称排序。 解决此问题的最佳方式是什么?
到目前为止,我尝试了两件事:
答案 0 :(得分:2)
NSSet
(以及NSSet
属性支持中使用的NSManagedObject
的基础子类),以及'设置'一般来说都是无序的。
排序到数组可能就是你想要的。这可以使用NSArray
sortedArrayUsingDescriptors:
和NSSet
' allObjects
来完成。
或者,可以将NSManagedObjectMutableSet
类addObject/unionSet
/ etc:方法转换为维护已排序数组的包装器,您可以通过类别方法访问该类,但可能有其他含义 - 到目前为止,最简单的解决方案是排序成数组。
答案 1 :(得分:0)
以下是一个例子:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"indexOrder" ascending:YES];
collectionViewData = [[goalManager rootGoalsForUser] sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
在这种情况下,rootGoalsForUser的创建方式如下:
- (NSArray *) rootGoalsForUser
{
NSSet *goal = [uManager goalWithParent:nil]; // retrieves root level goals
NSArray *rootGoalArray = [goal allObjects];
if ([rootGoalArray count] <= 0)
return nil;
else
return rootGoalArray;
}
所以,它是一个集合,我们将它放在一个包含allObjects的数组中,然后在该方法返回NSSortDescriptor后进行排序。