如何修复有关不兼容指针类型的警告?

时间:2013-08-21 15:32:22

标签: objective-c ios6 nsmutablearray nsarray

我收到了这个警告:

Incompatible pointer types initializing 'NSMutableArray *__strong' with an expression of type 'NSArray *

这是发出警告的代码行:

    NSMutableArray *apptDataArray = [AppointmentInfo MR_findAllWithPredicate:nsp];

其中MR_findAllWithPredicate返回NSArray。我一直在阅读SO和谷歌的所有帖子,但没有发现这样的事情。我认为这很简单,但我需要帮助。

2 个答案:

答案 0 :(得分:4)

NSArray 一个NSMutableArray,因此指针不兼容,并且调用变异方法会崩溃。您可以采用另一种方式,因为NSMutableArray NSArray子类。

您可以使用NSMutableArray

从返回值中生成+[NSMutableArray arrayWithArray:]
NSMutableArray *apptDataArray = [NSMutableArray arrayWithArray:[AppointmentInfo MR_findAllWithPredicate:nsp]];

如果您的方法返回nil,请创建NSArray *变量并在创建可变数组之前检查nil

答案 1 :(得分:3)

除了BergQuester的回答之外,还有一个从阵列中获取可变数组的更短路径:

NSMutableArray *apptDataArray = [[AppointmentInfo MR_findAllWithPredicate:nsp] mutableCopy];
相关问题