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,请确保释放可变数组。