我必须使用NSMutableSet
来存储我的字符串对象。我想以正确的顺序存储它们,例如从最小到最大的数字:
1
2
3
4
如果这样做:
NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObject:[NSString stringWithFormat:@"1"]];
[set addObject:[NSString stringWithFormat:@"2"]];
[set addObject:[NSString stringWithFormat:@"3"]];
[set addObject:[NSString stringWithFormat:@"4"]];
NSLog(@"set is %@",set);
[set release];
我没有得到我想要的东西,而是这个:
set is {(
3,
1,
4,
2
)}
所以我想我需要对它们进行排序以获得想要的结果?但实际上我找不到任何例子。
也许有人可以帮我这个?
感谢。
修改
我不能用别的。只需NSMutableSet
或NSSet
答案 0 :(得分:3)
正如其他人所说,NSSet
根据定义没有排序。但是,如果你 使用NSMutableSet
,你可以使用类似的东西从元素中获取一个排序数组(假设,在这种情况下元素是字符串)
NSArray* unsorted = [mySet allObjects];
NSArray* sorted = [unsorted sortedArrayUsingComparator: ^(NSString* string1, NSString* string2)
{
return [string1 localizedCompare: string2];
}];
答案 1 :(得分:2)
如果NSSet的任何特性是他们没有任何订单!
你应该为你的目的使用NSMutableArray。
在这里阅读收藏,它会帮助你
答案 2 :(得分:1)
'NSSet'是无序的。它只包含唯一的项目(没有重复的项目)。来自NSSet的Apples文档:
...声明对象的无序集合的编程接口。
如果您需要订购,请转到NSMutableArray
或NSMutableOrderedSet
。
答案 3 :(得分:1)
试试这个
NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObject:[NSString stringWithFormat:@"1"]];
[set addObject:[NSString stringWithFormat:@"2"]];
[set addObject:[NSString stringWithFormat:@"3"]];
[set addObject:[NSString stringWithFormat:@"4"]];
NSLog(@"%@",set); // Output (3,1,4,2,5) ... all objects
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES];
NSArray *sortedArray = [set sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
NSLog(@"%@",sortedArray);
答案 4 :(得分:0)
NSMutableSet
是无序的。抱歉。
答案 5 :(得分:0)
根据定义,集合是无序的。您需要使用NSMutableOrderedSet或NSOrderedSet在MacOS X 10.7或更高版本中提供的有序集。