【问题标题】:Incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *' [closed]使用“NSArray *”类型的表达式初始化“NSMutableArray *”的不兼容指针类型[关闭]
【发布时间】:2013-09-30 18:39:17
【问题描述】:

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

    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 并没有发现任何适用的)。

【问题讨论】:

  • NSMutableArray *tbValueArray = [NSArray arrayWithObjects:... -- 你看到那里有冲突吗??
  • 您是否在抱怨有人(不是我)因为您没有停下 10 秒钟试图真正理解错误消息而对您投了反对票??
  • 是的,我阅读了该消息,但不幸的是,当时我没有任何意义......这就是我问的原因。不是每个人都像你一样聪明,所以要有同情心,好吗?
  • 我曾多次花费 15-20 分钟试图破译单个编译器或运行时消息的含义——不是调试,只是试图理解消息在说什么。这个非常清晰和明确——它在其中标记了包含两种类型的行,并说您正在将一种分配给另一种并且这是不兼容的。再清楚不过了。
  • 好吧,你有我 7 年的时间。但你表现得像 17 岁。

标签: objective-c nsmutablearray nsarray


【解决方案1】:

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

【讨论】:

  • 做到了...谢谢...
  • 查克:你否决了我的问题;您的意思是对其中一个答案投反对票吗?这对我不利,如果您能联系版主并将其撤消,我将不胜感激。标清
  • @spokane-dude - 伙计,抱怨投反对票肯定会被投反对票。
  • @spokane-dude:我不知道是什么让你觉得我对你的问题投了反对票。你看不到谁对你投了反对票。在这种情况下,不是我。
  • @spokane-dude:请停止指责人们对你投反对票。 尤其是那些给你正确答案的人。 (而且投票是匿名的。)
【解决方案2】:

您不能将 NSArray 转换为 NSMutableArray。只需将其初始化为 NSMutableArray

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

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

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

【讨论】:

  • 不明白为什么有人给你-1。相同的答案和不错的答案+1
  • @JordanMontel:当他第一次发布它时,我投了反对票,因为那时答案实际上只是NSArray *tbValueArray = [NSArray arrayWithObjects: ... ],没有进一步的评论。现在我会删除反对票,因为这是一个真正的答案,但由于某种原因 Stack Overflow 不会让我这样做。
  • @Chuck 好的,我赞成:p
【解决方案3】:

替换

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

通过

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2020-11-17
    相关资源
    最近更新 更多