我有一个名为Receipt
的自定义类。它具有另一个称为Retailer
的类的属性。Retailer
具有另一个称为retailerName
的属性。
我得到一个Receipt
对象的数组。我希望它被排序为NSDictionary
,其键将是字母表,值将是Receipt
的数组,其Retailer
对象的retailerName
以字母表开头,数组按字母表排序。
我所拥有的:
[
{
"retailerName": "Adidas",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Book My Show",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Albert-Heijn",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Amazon",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "BlackBerry",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Lambhorgini",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Lewis Outlet",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Boston Store",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Lidl",
"totalCost": 392.1,
"purchasedOn": 1461218024549
}
]
我需要什么:
{
"A": [
{
"retailerName": "Adidas",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Albert-Heijn",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Amazon",
"totalCost": 392.1,
"purchasedOn": 1461218024549
}
],
"B": [
{
"retailerName": "BlackBerry",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Book My Show",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Boston Store",
"totalCost": 392.1,
"purchasedOn": 1461218024549
}
],
"L": [
{
"retailerName": "Lambhorgini",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Lewis Outlet",
"totalCost": 392.1,
"purchasedOn": 1461218024549
},
{
"retailerName": "Lidl",
"totalCost": 392.1,
"purchasedOn": 1461218024549
}
]
}
我知道情况有点复杂,但我已经尽力解释了。如有需要,要求进一步解释。
提前谢谢。
我解决了我的问题:
以下是我所做的:
@implementation NSMutableDictionary (DictionaryForSectionIndex)
+(NSMutableDictionary *)createDictionaryForSectionIndex:(NSArray *)array
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (char firstChar = 'a'; firstChar <= 'z'; firstChar++)
{
//NSPredicates are fast
NSString *firstCharacter = [NSString stringWithFormat:@"%c", firstChar];
NSArray *content = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"retailerName beginswith[cd] %@", firstCharacter]];
NSMutableArray *mutableContent = [NSMutableArray arrayWithArray:content];
if ([mutableContent count] > 0)
{
NSString *key = [firstCharacter uppercaseString];
[dict setObject:mutableContent forKey:key];
}
}
return dict;
}
@end
Array = [Array
sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
NSNumber *number1 = [NSNumber
numberWithFloat:[someValue floatValue]];
NSNumber *number2 = [NSNumber
numberWithFloat:[[somevalue floatValue]];
return [number2 compare:number1];
}];
您可以在字典中选择特定的键,并尝试对其进行排序