如何将xml(对象)映射到Objective-C中的方法?

如何将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

我有一个包含结构的xml文件。。在这个结构中,我有Actions节点。所以在Actions节点下,有多个“Action”节点,每个节点都有Value和Name属性

e、 g

因此,当我读取xml文件时,我希望将xml文件中的操作映射到类中相应的方法

我想我要找的是这样的东西

@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];