为什么我会收到错误"不兼容的指针类型分配给' NSMutableArray *'来自' NSArray *'。"排序键时?

时间:2015-04-14 03:24:03

标签: ios objective-c nsmutablearray nsarray nsmutabledictionary

使用下面的代码我收到错误,“不兼容的指针类型从'NSArray *'分配给'NSMutableArray *'。”我没有使用NSArray,为什么我会收到此错误,我该如何解决?

(NSMutableArray) = [NSMutableDictionary keysSortedByValueUsingComparator: ^(id obj1, id obj2) {

    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];

1 个答案:

答案 0 :(得分:1)

这是因为方法keysSortedByValueUsingComparator:返回指向包含键的已排序NSArray的指针。您正在使用NSArray指针并尝试将其指定给NSMutableArray。指针这是一个错误,因为NSArrayNSMutableArray的超类,并且不响应所有相同的选择器/方法。

您需要将keysSortedByValueUsingComparator:的输出分配给NSArray指针而不是NSMutableArray指针。