【问题标题】:(xcode objective-c) Array - finding a center of a object in an array(xcode objective-c) 数组 - 在数组中找到对象的中心
【发布时间】:2014-05-29 13:13:34
【问题描述】:

我对@9​​87654321@ 很不满意,但还是这样吧。

我有一个带有 5 个UIImageViewNSArray,我有一个脚本可以随机选择一个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 *'

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

谢谢

【问题讨论】:

  • 没有像“Xcode 数组”这样的东西。 Xcode 是一个 IDE……
  • @septi:他可能在标题中添加了 (xcode) 以表示这是与 Xcode 相关的问题(尽管这是标签的用途)并且与 Array 无关。
  • 这个问题与 Xcode 完全无关。如果您愿意,可以在 vim 中编写 iOS 或 OS X 应用程序。
  • 我是 xcode 的菜鸟并没有帮助,但我需要这段代码才能从数组中选择一个随机对象并将其中心输出到 InvaderBullet1
  • 向我们展示 Invader 的代码。

标签: objective-c uiimageview nsarray


【解决方案1】:

NSObject 显然没有 center 属性。虽然您没有将 NSObjects 添加到您的数组中,但您正在添加(我假设)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)
    }

【讨论】:

  • 我正在将 UIImageView 添加到数组中
  • 编辑了答案,但我不喜欢你没有努力尝试自定义我的代码这一事实。
  • 我已经在我的 xcode 中对其进行了调整,并且可以正常工作,感谢您的帮助 ^^
  • @LordZsolt 这不是这样的工作方式,您不要给出他们需要调整和自定义的部分答案,您应该对他们提出的问题给出完整的答案,否则您没有任何意义给出答案。
  • @Popeye 我不得不说这是一个 UIImageView 而不是 UIImage,然后在我的 xcode 中对其进行了评论和调整。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多