【问题标题】:incompatible pointer types assigning to 'nsmutablearray ' from 'nsarray '从“nsarray”分配给“nsmutablearray”的不兼容指针类型
【发布时间】:2012-12-13 05:53:20
【问题描述】:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];

sortedFloats = [Arr_distance sortedArrayUsingDescriptors:
                    [NSMutableArray arrayWithObject:sortDescriptor]];

sortedFloats 是 NSMutableArray,Arr_distance 也是 NSMutableArray

我收到警告Incompatible pointer types assigning to 'NSMutableArray ' from 'NSArray ' 仍然结果是正确的,但警告是关于什么的?

【问题讨论】:

    标签: iphone ios ios4 nsarray


    【解决方案1】:

    将您的 sortedFloats 设为 NSArray 而不是 NSMutableArray。你会发现你的警告消失了。

    享受编程

    【讨论】:

      【解决方案2】:

      该代码中有两个问题:

      1. sortedArrayUsingDescriptors 的参数类型是 NSArray 您传递的是 NSMutableArray
      2. sortedArrayUsingDescriptors 的返回类型是 NSArray,您将其分配给 NSMutableArray 对象

      检查方法签名:

      - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
      

      【讨论】:

        【解决方案3】:

        sortedArrayUsingDescriptors: 中,您应该传递的默认对象是NSArray。当您传递NSMutableArray 时,您会收到警告。

        根据文档:

        - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
        

        【讨论】:

          【解决方案4】:

          这里sortedFloatsNSMutableArray 的对象,并且您使用数组键和sortedArrayUsingDescriptorsNSMutableArray 方法对数组进行排序,返回NSArray..

          所以这里sortedArrayUsingDescriptors 方法的返回类型是NSArray,并且您将此返回类型数组存储在NSMutableArray 的对象中,名称是sortedFloats,所以将sortedFloats 作为NSArray 类的对象。 我希望这对你有帮助...

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多