如何在for()循环中增加属性名的数字部分?

时间:2012-11-05 21:02:17

标签: iphone xcode properties for-loop

我有10个泛识别器并且想要分配给类属性。 如何在for()循环中增加属性名的数字部分?

for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = pangesture + i ?? // doesn't work of course. but how??
}

2 个答案:

答案 0 :(得分:1)

  

我有10个泛识别器并且想要分配给类属性。怎么能   我在for()循环中增加属性名的数字部分?

我不确定我完全理解你的问题,但假设你有10个名为g1g10的手势识别器,你想用循环分配给10个对象,一个好的方法是将这10个手势识别器放入一个数组中,然后使用当前索引进行分配:

NSArray *recognizers = @[g1, g2, g3, g4, g5, g6, g7, g8, g9, g10];
if ([recognizers count < [_myArray count]) {
    NSLog("Houston, we have a problem! Not enough gesture recognizers to go around.");
}
for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = recognizers[i]; // note the fancy "new" array access syntax!
}

如果您没有单独分配手势识别器,那么您可以通过循环每次创建一个:

for (MyClass *instance in _myArray) {
    instance.recognizer = [[UIGestureRecognizer alloc] init...];
}

答案 1 :(得分:1)

这不是很棒的形式 - 绝对会在可能的情况下遵循Caleb的评论 - 但如果你真的回到了角落里:

for(int i = 0; i < [_myArray count]; i++)
{
    NSString *nameOfProperty = [NSString stringWithFormat:@"pangesture%d", i];
    UIPanGestureRecognizer *recogniser = [self valueForKey:nameOfProperty];
}

那是在使用key-value coding; IBOutlet必须符合KVC标准,否则无法加载NIB。