不兼容的指针类型使用“NSArray *”类型的表达式初始化“NSMutableArray *”

时间:2013-09-30 18:39:18

标签: objective-c nsmutablearray nsarray

这是导致上述警告的代码:

    NSMutableArray *tbValueArray = [NSArray arrayWithObjects:oServices1.text,
                oServices2.text,oServices3.text,oServices4.text,oServices5.text,oServices6.text,
                oServices7.text,oServices8.text,oServices9.text,oServices10.text,oServices11.text,
                oServices12.text,oServices13.text,oServices14.text,oServices15.text,oServices16.text,
                oServices17.text,oServices18.text,oServices19.text,oServices20.text,oServices21.text,
                oServices22.text,oServices23.text,oServices24.text,nil];

如何更改此设置以删除警告? (我看过Google和SO,但没有发现任何适用的内容。)

3 个答案:

答案 0 :(得分:4)

您是否尝试创建NSMutableArray或NSArray?您已将变量声明为类型NSMutableArray*,但右侧的表达式创建了一个NSArray。如果您希望此数组是可变的,请将arrayWithObjects:的接收方更改为NSMutableArray;如果没有,请更改声明以将其正确识别为NSArray而不是NSMutableArray。

答案 1 :(得分:1)

您无法将NSArray强制转换为NSMutableArray。只需将其初始化为NSMutableArray

即可
NSMutableArray *tbValueArray = [NSMutableArray arrayWithObjects: ... ]

或者,如果您实际上不需要NSMutableArray,请将您的变量类型更改为NSArray *

NSArray *tbValueArray = [NSArray arrayWithObjects: ... ]

答案 2 :(得分:0)

替换

NSMutableArray *tbValueArray = [NSArray arrayWithObjects:...];

通过

NSArray *tbValueArray = [NSArray arrayWithObjects:...];