(xcode objective-c)数组 - 在数组中查找对象的中心

时间:2014-05-29 13:13:34

标签: objective-c uiimageview nsarray

对于Xcode而言,我很高兴,但现在就这样了。

我有一个NSArray有5个UIImageView,我有一个脚本可以随机选择UIImageView,但我需要它然后输出图像的中心选择。 我的代码如下所示:

NSMutableArray *Invader = [[NSMutableArray alloc] init];
[Invader addObject:H1];
[Invader addObject:H2];
[Invader addObject:H3];
[Invader addObject:H4];
[Invader addObject:H5];

然后像这样选择将新UIImageView移动到:

的位置
if (FIRE1 == YES){
    NSObject *Inv1 = [Invader randomObject]; //randomObject picks a random Invader
    InvaderBullet1.hidden = NO;
    InvaderBullet1.center = CGPointMake(Inv1.center.x, Inv1.center.y)
}

它给我的错误是Property 'center' not found on object of type 'NSObject *'

我希望这对任何人都有意义,任何人都可以帮助我。

由于

2 个答案:

答案 0 :(得分:0)

NSObject显然没有中心属性。虽然您没有将NSObject添加到您的数组中,但您正在添加(我假设)UIImageViews。因此,如果您要添加UIImages,也可以删除UIImages。

  if (FIRE1 == YES){
    NSObject *Inv1 = [Invader randomObject];
    if ([Inv1 isKindOfClass:[UIImageView Class]]) //randomObject picks a random Invader
         ((UIImageView*)InvaderBullet1).hidden = NO;
         ((UIImageView*)InvaderBullet1).center = CGPointMake(Inv1.center.x, Inv1.center.y)
    }

答案 1 :(得分:0)

您只需为变量指定正确的类型:

if (FIRE1 == YES){
    UIImageView *Inv1 = [Invader randomObject]; //randomObject picks a random Invader
    InvaderBullet1.hidden = NO;
    InvaderBullet1.center = CGPointMake(Inv1.center.x, Inv1.center.y)
}

这假设您的randomObject方法(看起来像NSArray上的类别方法)的返回类型为id。如果其返回类型为NSObject *,那么您需要进行强制转换:

UIImageView *Inv1 = (UIImageView *)[Invader randomObject]; //randomObject picks a random Invader

(次要注意:我建议坚持既定的命名约定。在这种情况下:变量通常以小写字符开头。您正在做其他需要/想要使用您的代码的人一个忙。)