gpt4 book ai didi

ios - 是否可以使用变量动态更改代码中类的名称?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:12 26 4
gpt4 key购买 nike

我有这个功能:

- (NSString*) getId:(id)id_field withColumn:(int)test_column withTable:(NSString *) tableName  //renvoyer le label
{
NSError *error = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:tableName
inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (<tableName of class> *info in fetchedObjects)
{
if (test_column == LBL2_CLMN)
{
NSLog(@"info.id :%@", info.id);
if ([info.id compare:id_field] == NSOrderedSame)
NSLog(@"info.id :%@", info.label1);
return info.label1;
}
else if (test_column == LBL1_CLMN)
{
if ([info.id compare:id_field] == NSOrderedSame)
return info.label2;
}
}
return @"";
}

如何使用变量 tableName 更改类 的名称以实例化 *info?

这可能吗?

最佳答案

不是直接的,但是由于 executeFetchRequest 返回 NSManagedObject 在重复循环中使用它并将对象转换为 if - else 中的预期类> 范围。

NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *object in fetchedObjects)
{
if (test_column == LBL2_CLMN)
{
ClassA *info = (ClassA *)object;
NSLog(@"info.id :%@", info.id);
if ([info.id compare:id_field] == NSOrderedSame) {
NSLog(@"info.id :%@", info.label1);
return info.label1;
}
}
else if (test_column == LBL1_CLMN)
{
ClassB *info = (ClassB *)object;
if ([info.id compare:id_field] == NSOrderedSame)
return info.label2;
}
}
return @"";

而且我猜第二个 if 子句中缺少一对大括号。

关于ios - 是否可以使用变量动态更改代码中类的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579112/

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