ios - 为什么在对键进行排序时出现错误 "Incompatible pointer types assigning to ' NSMutableArray *' from ' NSArray *'."?

标签 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;
}];

最佳答案

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

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

关于ios - 为什么在对键进行排序时出现错误 "Incompatible pointer types assigning to ' NSMutableArray *' from ' NSArray *'."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618618/

相关文章:

ios - Swift - UITableView 不放置 UIimage=nil

iphone - 从网络切换时如何接收来自 NSURLConnection Delegate 的数据?

ios - newArray = array 和 newArray = [array copy] 有什么区别?

ios - 如何将 2 个 NSDictionary Contain 数组合并到一个 NSMutableArray

ios - 获取所有包含 TextFields 的 TableView Cell 的数据(包括隐藏 View )

ios - 如何在导航栏中添加pageControl和标题?

ios - UIAlertController 在 iOS 9.3 中太慢

objective-c - 从另一个数组添加对象

ios - 按升序对数组进行排序并删除 objective-c 中的重复值

ios - 使用 Parse、Testflight 和 Xcode 6 的推送通知不起作用