2

我试图让一个正方形出现在点数组中的一个点上。我正在使用 'Square.center = array[random integer]' 来选择这一点。

我收到错误“Assigning to 'CGPoint' (aka 'struct CGPoint') from in compatible type 'id'”。我认为这意味着它在我的数组中找不到点。

我的数组是这样设置的,从我找到的各种示例中拼凑而成。

Array = [NSArray arrayWithObjects:
        [NSValue valueWithCGPoint:CGPointMake(
                                              self.canvas.center.x,
                                              self.canvas.center.y
                                              )],
        [NSValue valueWithCGPoint:CGPointMake(
                                              self.canvas.center.x+55,
                                              self.canvas.center.y
                                              )],
        [NSValue valueWithCGPoint:CGPointMake(
                                              self.canvas.center.x-55,
                                              self.canvas.center.y
                                              )],
        [NSValue valueWithCGPoint:CGPointMake(
                                              self.canvas.center.x,
                                              self.canvas.center.y+55
                                              )],
        [NSValue valueWithCGPoint:CGPointMake(
                                              self.canvas.center.x-55,
                                              self.canvas.center.y
                                              )],
        nil
        ];

我怎样才能让我的方格进入这些点之一?后来我想在每个点上都有一个相同的正方形。

4

1 回答 1

2

您收到的错误表明它无法将 NSValue 的 id 转换为 CGPoint。此链接有类似的讨论:

如何以简单的方式将 CGPoint 对象添加到 NSArray?

您需要做的是从 NSValue 取回 CGPoint。NSValue 为这种情况提供了 CGPointValue。因此,从您从 NSArray 返回的 NSValue 中,您将调用 CGPointValue 方法来完成最后一步。如果你有一个名为数组的 NSArray 和一个名为 Square 的 C4Shape,你可以这样做:

    Square.center = [array[randomInteger] CGPointValue];

其中 randomInteger 将是您在其他地方选择的某个整数。

于 2013-10-08T14:36:57.237 回答