gpt4 book ai didi

objective-c - 使用表示变量名称的字符串来设置变量

转载 作者:行者123 更新时间:2023-12-02 08:54:55 26 4
gpt4 key购买 nike

这是一个我知道可以简化的基本示例,但为了测试目的,我想以这种方式执行此操作。我想根据附加字符串设置一个变量(变量“cam0”和“pos1”已在类中声明)。附加字符串本质上是一个索引,我将迭代一个循环,将摄像机(cam0、cam1..)分配到不同的位置(pos0、pos1..)。

cam0 被定义为 UIImageView
pos1 被定义为 CGRect

这适用于名为 coverIndex 的 NSString 变量:

NSString* text = [[NSString alloc] initWithString:@""];
NSLog(@"%@",(NSString *)[self performSelector:NSSelectorFromString([text stringByAppendingString:@"coverIndex"])]);

我为 coverIndex 设置的正确字符串已记录到控制台。

现在回到我的 UIImageView 和 CGRect。我希望这个能发挥作用。

NSString* camText = [[NSString alloc] initWithString:@"cam"];
NSString* posText = [[NSString alloc] initWithString:@"pos"];

[(UIImageView *)[self performSelector:NSSelectorFromString([camText stringByAppendingString:@"0"])] setFrame:(CGRect)[self performSelector:NSSelectorFromString([posText stringByAppendingString:@"1"])]];

我的错误是“请求转换为非标量类型”

这是我发现做这类事情的唯一方法(并使 NSLog 工作),但我仍然相信有一种更简单的方法。

非常感谢您的帮助:)

最佳答案

使用KVC ,这是一项令人惊叹的技术,可以满足您的需求:

for (int index = 0; index < LIMIT; index++) {

NSString *posName = [NSString stringWithFormat:@"pos%d", index];
CGRect pos = [[self valueForKey:posName] CGRectValue];
NSString *camName = [NSString stringWithFormat:@"cam%d", index];

UIImageView *cam = [self valueForKey:camName];
cam.frame = pos;
}

关于objective-c - 使用表示变量名称的字符串来设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com