Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一本词典与另一部iPhone进行排序_Iphone_Sorting_Nsmutabledictionary - Fatal编程技术网

将一本词典与另一部iPhone进行排序

将一本词典与另一部iPhone进行排序,iphone,sorting,nsmutabledictionary,Iphone,Sorting,Nsmutabledictionary,我有两个NSMutableDictionary对象。Dict 1的键比Dict 2少,但两个词典共享的键在语法上是相同的。我想根据dict 2中那些键的值对dict 1重新排序。Dict 2中的值是整数 有人能帮我开始吗 编辑: 我有一个键数组和一个包含键和数值的字典。字典中的键和值比数组中的键/对象多。我想根据字典中那些键的对应值对数组重新排序 很抱歉重做了这个问题,但这更准确。您可能有一个根本性的误解NSDictionary和NSSet对象始终未排序 仅对NSArray和sensordere

我有两个NSMutableDictionary对象。Dict 1的键比Dict 2少,但两个词典共享的键在语法上是相同的。我想根据dict 2中那些键的值对dict 1重新排序。Dict 2中的值是整数

有人能帮我开始吗

编辑: 我有一个键数组和一个包含键和数值的字典。字典中的键和值比数组中的键/对象多。我想根据字典中那些键的对应值对数组重新排序


很抱歉重做了这个问题,但这更准确。

您可能有一个根本性的误解
NSDictionary
NSSet
对象始终未排序

仅对
NSArray
sensorderedset
对象进行排序

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


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

是否使用Comparator:查找方法调用SortedArray?这将获取一个数组,并返回一个包含已排序元素的数组

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

    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;
}
NSComparisonResult(^sortBlock)(id,id)=^(id obj1,id obj2){
如果([[obj1 objectForKey:@“sortorder”]intValue]>[[obj2 objectForKey:@“sortorder”]intValue]){
返回(NSComparisonResult)或撤销;
}
if([[obj1 objectForKey:@“sortorder”]intValue]<[obj2 objectForKey:@“sortorder”]intValue]){
返回(NSComparisonResult)或删除;
}
返回(NSComparisonResult)命令名;
};
+(NSArray*)返回排序DarrayByAlpha:(NSArray*)输入数组whichField:(NSString*)whichField{
NSArray*SortDarray=[使用比较器输入数组SortDarray:sortBlock];
返回至Darray;
}

Hi,对不起,这句话没有任何意义:“Dict 1的键比Dict 2少,但两者中的键完全相同。”可能是打字错误?我更新了问题。我的意思是,它们共享的键是相同的字符串,但dict 2中的键不在dict 1I中。我编辑了我的问题。我不知道如何只迭代字典中的一些对象,你能用我要找的数组和dict为它添加代码吗?类似于[array SorterDarrayusingComporator…]的东西是哪个comporator函数?