用另一部iPhone排序一个字典

时间:2012-03-14 13:56:07

标签: iphone sorting nsmutabledictionary

我有两个NSMutableDictionary对象。 Dict 1的密钥少于dict 2,但两个字典共享的密钥在语法上是相同的。我想用dict 2中的那些键的值重新排序dict 1.Dict 2中的值是整数。

有人可以让我开始吗?

编辑: 我有一个键数组和一个带键和数值的字典。字典中的键和值多于数组中的键/对象。我想通过字典中这些键的相应值重新排序数组。

对于问题的重做感到抱歉,但这更准确。

2 个答案:

答案 0 :(得分:0)

你可能在这里有一个根本的误解。 NSDictionaryNSSet个对象始终未排序。

仅对NSArrayNSOrderedSet个对象进行排序。

您可能想要做的是创建第三个对象,NSArray并使用您想要的任何键填充它。

然后,如果您遍历NSArray,则可以按排序数组的顺序访问字典对象。

答案 1 :(得分:0)

您是否正在寻找方法调用sortedArrayUsingComparator:?这将采用一个数组并返回一个元素已排序的数组。

这是一些示例代码,它根据“排序顺序”字段中的值对字典进行排序。您应该阅读有关这些电话的文档:

    NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) {

    if ([[obj1 objectForKey:@"sortorder"] intValue] > [[obj2 objectForKey:@"sortorder"] intValue]) { 
        return (NSComparisonResult)NSOrderedDescending;
    }
    if ([[obj1 objectForKey:@"sortorder"] intValue] < [[obj2 objectForKey:@"sortorder"] intValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
};

+ (NSArray *) returnSortedArrayByAlpha:(NSArray*) inputArray whichField:(NSString*) whichField {

    NSArray * sortedArray = [inputArray sortedArrayUsingComparator:sortBlock];
    return  sortedArray;
}