如何将xml(对象)映射到Objective-C中的方法?
我有一个包含结构的xml文件。。在这个结构中,我有Actions节点。所以在Actions节点下,有多个“Action”节点,每个节点都有Value和Name属性 e、 g 因此,当我读取xml文件时,我希望将xml文件中的操作映射到类中相应的方法 我想我要找的是这样的东西如何将xml(对象)映射到Objective-C中的方法?,objective-c,ios,xml,cocoa-touch,mapping,Objective C,Ios,Xml,Cocoa Touch,Mapping,我有一个包含结构的xml文件。。在这个结构中,我有Actions节点。所以在Actions节点下,有多个“Action”节点,每个节点都有Value和Name属性 e、 g 因此,当我读取xml文件时,我希望将xml文件中的操作映射到类中相应的方法 我想我要找的是这样的东西 @interface CalculatorActions [Action("addOperand", "Enter first operand")] - (void) addOperand:(double)operand1
@interface CalculatorActions
[Action("addOperand", "Enter first operand")]
- (void) addOperand:(double)operand1 ToOther:(double)operand2;
执行此操作的最佳方法是什么?通过一些基本的字符串操作,您可以将
“输入第一个操作数”
转换为NSString@“输入第一个操作数”
看到了吗
您可以使用,来创建SEL(选择器)。您可以使用[自执行选择器:aSelector]
,[自执行选择器:aSelector withObject:object afterDelay:0]
或执行此操作
要检查某个选择器是否工作,请使用
对于解析本身,您会发现大量的后期处理。您可以创建一个
NSInvocation
实例,设置选择器、参数,还可以选择捕获返回值。您可以使用字符串创建所有这些
e、 g
注意-
setArgument:
选择器采用指针地址,参数索引从2开始。将操作名称转换为方法名称时使用的规则是什么?因为在这个示例中,您已经展示了它们是不同的。+1用于提及NSInvocation,NSInvocation允许您调用的参数。performSelector也可以工作,但仅限于一个“withObject”
@interface CalculatorActions : NSObject
// Property
@property (strong, nonatomic) NSString* actionScript;
// Actions
- (void)enterFirstOperand:(double)operand;
- (void)enterSecondOperand:(double)operand;
- (void)selectOperator:(NSString*)operator;
- (void)clickCalculate;
// Validations
-(void)validateResult:(NSString*)exptectedResult;
@end
@interface CalculatorActions
[Action("addOperand", "Enter first operand")]
- (void) addOperand:(double)operand1 ToOther:(double)operand2;
SEL mySelector = NSSelectorFromString(@"testAddFunction");
Class MyClass = NSClassFromString(@"CalculatorActions");
NSString *myArgument = @"5";
NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:[MyClass instanceMethodSignatureForSelector:mySelector]];
[invocation setTarget:myClass];
[invocation setSelector:mySelector];
[invocation setArgument:&myArgument atIndex:2];
[invocation invoke];