@implementation NSDictionary (Helper)
- (id)keyForIndex:(NSUInteger)index
{
NSArray* keys = [self sortedKeyArr];
NSString* key = keys[index];
return key;
}
- (id)objectForKeyIndex:(NSUInteger)index
{
NSArray* keys = [self sortedKeyArr];
NSString* key = keys[index];
return [self objectForKey:key];
}
- (id)objectForIndexPath:(NSIndexPath*)indexPath
{
NSArray* keys = [self sortedKeyArr];
NSString* key = keys[indexPath.section];
NSArray* arr = [self objectForKey:key];
if ([arr isKindOfClass:[NSArray class]]) {
return arr[indexPath.row];
}
return nil;
}
/**
* 返回排线key数组
*
* @return
*/
- (NSArray*)sortedKeyArr
{
return [[self allKeys] sortedArrayUsingSelector:@selector(compare:)];
}
- (id)dekeyForIndex:(NSUInteger)index
{
NSArray* keys = [self desortedKeyArr];
NSString* key = keys[index];
return key;
}
- (id)deobjectForKeyIndex:(NSUInteger)index
{
NSArray* keys = [self desortedKeyArr];
NSString* key = keys[index];
return [self objectForKey:key];
}
- (id)deobjectForIndexPath:(NSIndexPath*)indexPath
{
NSArray* keys = [self desortedKeyArr];
NSString* key = keys[indexPath.section];
NSArray* arr = [self objectForKey:key];
if ([arr isKindOfClass:[NSArray class]]) {
return arr[indexPath.row];
}
return nil;
}
/**
* 返回排线key数组
*
* @return
*/
- (NSArray*)desortedKeyArr
{
return [[self allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj2 compare:obj1];
}];
}
- (NSIndexPath*)indexPathForObject:(id)object
{
NSArray* keys = [self sortedKeyArr];
for (int i = 0; i < keys.count; i++) {
NSArray* sectionArr = [self objectForKey:keys[i]];
for (int j = 0; j < sectionArr.count; j++) {
id objTmp = sectionArr[j];
if (objTmp == object) {
return [NSIndexPath indexPathForRow:j inSection:i];
}
}
}
return nil;
}
@end