我有几个我想要使用的对象,比如obj11,obj21,obj33等。
正确使用对象的选择取决于用户定义的一些参数,例如:要使用的大小和对象的类型。
因此,对象名称上的第一个数字表示大小,第二个字母表示该类型。如果用户选择对象大小2和对象种类1,则要加载的对象将是" obj21"。
有没有办法根据对象的名称引用一个对象作为NSString?
类似
NSString *name = [NSString stringWithFormat:@"obj%d%d", size, kind];
["use object name" doSomething];
我需要类似NSSelectorFromString的东西,但在这种情况下,它会根据其名称运行一个方法。我需要的是" NSObjectFromString",它根据字符串的名称引用一个对象。
我该怎么做?感谢。
答案 0 :(得分:3)
由于这是不可能的,最好将对象存储在NSDictionary(或其可变对应物)中,并使用您构建的字符串作为该对象的键。
这是一个奇怪的例子:
NSMutableDictionary *objectDict = [[NSMutableDictionary alloc] init];
... init your objects somehow ...
// build your keys somehow and add the object to the dict
int size = 1;
int kind = 2;
NSString *name = [NSString stringWithFormat:@"obj%d%d", size, kind];
[objectDict addObject:obj12 forKey:name];
... Do some stuff ...
// access your object and call a method
id obj = [objectDict objectForKey:name];
[obj doSomething];
答案 1 :(得分:0)
您可以制作工厂方法并使用NSSelectorFromString
动态调用它。
此处有更多详情:
编辑:
我的回答是我认为同样的问题:
id object = [[NSClassFromString(@"NameofClass") alloc] init];