iOS - “NSObjectFromString”— building the name of an object from string
我有几个要使用的对象,如obj11、obj21、obj33等。
要使用的正确对象的选择取决于用户定义的一些参数,例如:要使用的大小和对象类型。
所以,对象名称上的第一个数字将表示大小,第二个字母表示类型。如果用户选择对象大小2和对象类型1,则要加载的对象将为"obj21"。
有没有一种方法可以根据对象的名称作为nsstring来引用它?
类似的东西
1 2 | NSString *name = [NSString stringWithFormat:@"obj%d%d", size, kind]; ["use object name" doSomething]; |
我需要类似nsselectorfromstring的东西,但在本例中,它基于其名称运行一个方法。我需要的是类似于"nsObjectfromString"的东西,它以字符串的形式引用一个基于其名称的对象。
我该怎么做?谢谢。
因为这是不可能的,所以最好将对象存储在nsdictionary(或其可变对应物)中,并使用您构建的字符串作为该对象的键。
下面是一个奇怪的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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]; |
您可以创建一个工厂方法,并使用
详细信息如下:
http://Deavix.COMP/COML/MAC/OXI文档/ COCOA/参考/基础/杂项/基础功能/参考/参考文献.HTML
编辑:
我对我所认为的问题的回答是相同的:
1 | id object = [[NSClassFromString(@"NameofClass") alloc] init]; |
是否按名称创建Objective-C类实例?