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

Objective c 如何修复有关不兼容指针类型的警告?,objective-c,ios6,nsmutablearray,nsarray,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。

我收到这个警告:

Incompatible pointer types initializing 'NSMutableArray *__strong' with an expression of type 'NSArray *
这是给出警告的代码行:

    NSMutableArray *apptDataArray = [AppointmentInfo MR_findAllWithPredicate:nsp];
在这里,MR_findAllWithPredicate返回一个NSArray。我一直在阅读SO和谷歌的所有帖子,但没有发现类似的内容。我认为它相当简单,但我需要帮助。

NSArray
不是一个
NSMutableArray
,因此指针不兼容,对其调用变异方法会崩溃。您可以选择另一种方式,因为
NSMutableArray
NSArray
子类

您可以使用
+[NSMutableArray arraywhitharray:][code>从返回值生成一个
NSMutableArray

NSMutableArray *apptDataArray = [NSMutableArray arrayWithArray:[AppointmentInfo MR_findAllWithPredicate:nsp]];
如果您的方法返回
nil
,请创建
NSArray*
变量,并在创建可变数组之前检查
nil

NSArray
不是
NSMutableArray
,因此指针不兼容,对其调用变异方法将崩溃。您可以选择另一种方式,因为
NSMutableArray
NSArray
子类

您可以使用
+[NSMutableArray arraywhitharray:][code>从返回值生成一个
NSMutableArray

NSMutableArray *apptDataArray = [NSMutableArray arrayWithArray:[AppointmentInfo MR_findAllWithPredicate:nsp]];

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

除了BergQuester的答案之外,还有一种从数组中获取可变数组的较短方法:

NSMutableArray *apptDataArray = [[AppointmentInfo MR_findAllWithPredicate:nsp] mutableCopy];

除了BergQuester的答案之外,还有一种从数组中获取可变数组的较短方法:

NSMutableArray *apptDataArray = [[AppointmentInfo MR_findAllWithPredicate:nsp] mutableCopy];

不要将NSArray的地址分配给类型为NSMutableArray的指针。就这么简单。(但是,您可以将NSMutableArray地址分配给NSArray指针,因为NSMutableArray是NSArray的子类。)不要将NSArray的地址分配给类型为NSMutableArray的指针。就这么简单。(但是,您可以将NSMutableArray地址分配给NSArray指针,因为NSMutableArray是NSArray的子类。)如果使用copy而不使用ARC,请确保释放可变数组。如果使用copy而不使用ARC,请确保释放可变数组。