gpt4 book ai didi

swift - 使用字符串快速调用动态方法

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:29 24 4
gpt4 key购买 nike

swift 是否支持使用字符串调用方法的功能?

我将从 http://pilky.me/21/ 中窃取一个很好的例子来说明我想 swift 做什么。这是一个简单的示例,但对于某些设计模式而言,此功能非常强大并且受到许多其他流行语言的支持。

- (void)parseObject:(id)object {
for (id data in object) {
if ([[data type] isEqualToString:@"String"]) {
[self parseString:[data value]];
} else if ([[data type] isEqualToString:@"Number"]) {
[self parseNumber:[data value]];
} else if ([[data type] isEqualToString:@"Array"]) {
[self parseArray:[data value]];
}
}
}

- (void)parseObjectDynamic:(id)object {
for (id data in object) {
[self performSelector:NSSelectorFromString([NSString stringWithFormat:@"parse%@:", [data type]]) withObject:[data value]];
}
}

- (void)parseString:(NSString *)aString {}
- (void)parseNumber:(NSString *)aNumber {}
- (void)parseArray:(NSString *)aArray {}

As you can see, you can replace 7 line if statement with a single line. And the benefit is that if you need to support a new type in the future, you just add the new method, rather than have to remember to add an extra else if to your main parse method.

我知道您可以动态调用 block 。

这里有一个类似的 SO 问题,但没有解决如何在 swift 中使用字符串来完成它: Alternative to performSelector in Swift?

最佳答案

关于swift - 使用字符串快速调用动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207922/

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