我有一个从plist中检索其信息的应用程序。
plist
是带有键(作者,猫,内容)的Dictionaries
数组。
现在我想在表格中显示类别。
所以我需要以排序的方式输入所有唯一的类别条目。
我已成功实施以下方式,但我感兴趣的是这是“正确”的解决方案。
NSMutableArray
词典的条目NSMutableArray
放入NSSet
以获取唯一元素NSSet
放入NSArray
,以便对其进行排序。 NSMutableArray
NSArray
醇>
我觉得不是,这是这样做的正确方法。 有什么建议可以做得更好吗?
非常感谢!
//InhaltefromWEb is a NSMutableArray
-(NSArray*) getCategories {
NSMutableArray* categorieTemp = [[NSMutableArray alloc] init];
unsigned count = [InhalteFromWeb count];
while (count--) {
NSString *tempString;
tempString=[[InhalteFromWeb objectAtIndex:count] objectForKey:CATEGORY];
NSLog(@"tempString %@", tempString );
[categorieTemp addObject:tempString];
}
NSSet *uniqueElements = [NSSet setWithArray:categorieTemp];
NSLog(@"categories from engine %@", categorieTemp);
NSArray* tempAr = [[[NSArray alloc] initWithArray:[uniqueElements allObjects]]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
return [NSMutableArray arrayWithArray:tempAr];
}
答案 0 :(得分:0)
检查包含[categorieTemp containsObject:tempString]
的现有字符串,并使用[categorieTemp sortUsingComparator:...]
示例:
[categorieTemp sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
return [(NSString *)obj1 caseInsensitiveCompare:(NSString *)obj2];
}];
答案 1 :(得分:0)
我这样做是为我的数组排序日期:
[array sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSDate *date1 = [obj1 objectForKey:@"datum"] == nil ? nilDate : [obj1 objectForKey:@"datum"];
NSDate *date2 = [obj2 objectForKey:@"datum"] == nil ? nilDate : [obj2 objectForKey:@"datum"];
return (NSComparisonResult)[date2 compare: date1];
}];