使用一个if语句而不是多个

时间:2014-12-27 23:31:57

标签: ios xcode

对于说话的话,可以说你有5个浮点数,它们都存储在一个浮点数中,并且都是图像的所有位置。现在我怎么 - 如果可能的话 - 看看这五个花车中的哪一个等于500,如果有任何花车相等,找到哪些花架并给它们一个新位置。

-(void)Position
{
ObjectOne.center = CGPointMake(ObjectOne.center.x, 500);
ObjectFour.center = CGPointMake(ObjectFour.center.x, 500);

Float[1] = ObjectOne.center.y;
Float[2] = ObjectTwo.center.y;
Float[3] = ObjectThree.center.y;
Float[4] = ObjectFour.center.y;
Float[5] = ObjectFive.center.y;
[self Cheaking];
}

-(void)Checking
{
if(Float[1 to 5] == 500) {
Find objects which are equal.
ObjectWhichIsEqual.center = CGPointMake(225, ObjectWhichIsEqual.center.y)
ObjectWhichIsEqualTwo.center = CGPointMake(225, ObjectWhichIsEqualTwo.center.y) } 
}

更新 我现在不是使用浮点数,而是为每个坐标使用NSNumber并将它们存储在NSMutableSet中。现在我使用NSPredicate来查看是否有任何数字等于500,但我似乎无法使用if if语句来执行此操作。之所以我使用一个if语句来执行此操作是因为我必须执行大量if语句示例:

if(ObjectOne.center.y == 500) {
ObjectOne.center = CGPointMake(225, ObjectOne.center.y);
}

if(ObjectTwo.center.y == 500) {
ObjectTwo.center = CGPointMake(225, ObjectTwo.center.y);
} ect...

如果这是对所有人的声明,那么我不知道如何完成它。

-(void)Position
{
ObjectOne.center = CGPointMake(0, 500);
ObjectFour.center = CGPointMake (0, 500);
NSNumber *one = [NSNumber numberWithFloat:ObjectOne.center.y];
NSNumber *two = [NSNumber numberWithFloat:ObjectTwo.center.y];
NSNumber *three = [NSNumber numberWithFloat:ObjectThree.center.y];
NSNumber *four = [NSNumber numberWithFloat:ObjectFour.center.y];
NSNumber *five = [NSNumber numberWithFloat:ObjectFive.center.y];

NSMutableSet *set = [NSMutableset setWithObjects:one, two, three, four, five, nil];
[self checking];
}

-(void)Checking
{
NSPredicate *pre;
pre = [NSPredicte predicateWithFormat:"SELF == %i", 500];
[set filterUsingPredicate:pre]; //line not working
if(pre == true) {find which objects are equal and move them // have no clue how to do this
    }
}

我知道NSPredicate可能是错误的方法,所以有什么类似的东西可以解决这个问题。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您要引用的对象不是 float 。即使您将 float 等于500,也无法引用对象。最好将对象放在 NSMutableArray NSMutableSet 中,然后您可以相应地遍历每个对象。您还可以获得集合的大小,使事情变得更容易。

只是一个建议 - (因为我个人试图避免轮询方法)

根据您的具体操作,请考虑覆盖中心属性的 setter 。 (您可能需要子类化)

之类的东西 -

-(void)setCenter:(CGPoint)center {
     // check if y == 500 here first and do what needs to be done...
     if (center.y == 500) { 
           //do stuff... center.x = 250; etc...
      }
     _center = center;
}