gpt4 book ai didi

ios - 如何通过运行时生成的 NSString 访问实例变量(反射)

转载 作者:行者123 更新时间:2023-11-28 22:02:41 26 4
gpt4 key购买 nike

我有以下小代码难题..

- (void) transmitArray {

NSString* arrayName = @"array1";

NSArray* array1 = [NSArray arrayWithObject:@"This is Array 1"];
NSArray* array2 = [NSArray arrayWithObject:@"This is Array 2"];

NSMutableArray* targetArray = [NSMutableArray arrayWithCapacity:1];

}

有没有一种方法可以使用字符串“array1”来访问 NSArray“array1”,这样我就可以将它复制到目标数组中。因此,如果字符串为“array2”,我就可以访问第二个数组?

我读到过有关使用 NSSelectorFromString 创建选择器的信息,这种技术被称为“内省(introspection)”,但除此之外我很困惑..

希望有人能帮忙!

最佳答案

不是真的。如果它是类的实例变量(通常称为属性),那么您可以使用内省(introspection)来检查对象并获取/设置所需的变量。您可以使用 KVO 方法

setValue:(id) ForKeyPath:(NSString *)

valueForKeyPath:(NSString *)

访问它们

但是,您不能(直接)使用在实例方法内部声明的局部变量来做到这一点。我建议用您的数组填充字典,然后将其用作查找表

NSMutableDictionary *arrays = [[NSMutableDictionary alloc] init];

NSArray *array1 = @[@"This is Array 1"];
[arrays setObject:array1 forKey:@"array1"];

NSArray *array2 = @[@"This is Array 2"];
[arrays setObject:array1 forKey:@"array2"];

//grab a copy of array1
NSArray *targetArray = [arrays[@"array1"] copy];

关于ios - 如何通过运行时生成的 NSString 访问实例变量(反射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746255/

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