gpt4 book ai didi

ios - 使用 RAC 动态选择要观察的属性

转载 作者:行者123 更新时间:2023-11-29 12:19:20 28 4
gpt4 key购买 nike

我在一个 View 中有很多 UISegmentedControl(实际上是 74 个),我想使用 RACChannel 与它们各自的模型属性进行双向绑定(bind)。为了减少代码,我想在运行时使用 IBOutletCollection 的枚举分配这些绑定(bind)。

为了完成这项工作,我必须想出一种动态选择正确属性的方法。我的模型有 74 个属性遵循以下命名约定:“item1a、item1b、item1c、item2a...”。

在每个 UISegmentedControl 上,我都有一个属性“名称”,我可以在运行时提取该属性以了解应将哪个控件绑定(bind)到哪个属性。

本质上我想做的是

RACCHannelTerminal *modelTerminal = RACChannelTo(self, "DYNAMIC PROPERTY NAME");

我可以通过以下方式获取动态属性名称的值

[self valueForKey:@"item1a"];

但这并没有给出要观察的实际属性,只是一个值。

有什么办法可以做到所描述的吗?

最佳答案

从文档 - RACChanelTo - 只是一个宏,您可以将其重写为

[[RACKVOChannel alloc] initWithTarget:<#(NSObject *)#> keyPath:<#(NSString *)#> nilValue:<#(id)#>]

所以,不要使用 RACChanelTo(,),而是使用

RACCHannelTerminal *modelTerminal = [[RACKVOChannel alloc] initWithTarget:self keyPath:@"DYNAMIC PROPERTY NAME" nilValue:nil];

警告

来自 Reactive Cocoa header

/// Do not use this directly. Use the RACChannelTo macro above.

define RACChannelTo_(TARGET, KEYPATH, NILVALUE) \

[[RACKVOChannel alloc] initWithTarget:(TARGET) keyPath:@keypath(TARGET, KEYPATH)

nilValue:(NILVALUE)][@keypath(RACKVOChannel.new, followingTerminal)]

希望对你有帮助

关于ios - 使用 RAC 动态选择要观察的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088123/

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