这应该很简单。我有一个NSSet of People对象。如何在集合中按字母顺序获取姓氏第一个人的对象?
答案 0 :(得分:0)
如果你不希望这个集合很大,你可以使用:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES];
NSArray *sortedArray = [peopleSet sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
People *person = nil;
if (sortedArray) {
person = sortedArray[0];
}
答案 1 :(得分:0)
编写方法firstObjectInSet:usingComparator:
你甚至可以在NSSet上使它成为一个类别方法。
在该方法中,您只需遍历集合中的对象(可能使用enumerateObjectsUsingBlock)。您需要在集合之外定义一个local(_block)变量firstObject。对于每次迭代,如果新对象位于前一个对象之前,则将firstObject替换为新对象。然后在枚举完成后,返回firstObject作为方法结果。这将始终完成一次通过集合并返回第一个对象。
如果您不需要那么灵活,请删除NSComparator参数,并对方法进行硬编码以查找第一个对象。