菜鸟教程小白 发表于 2022-12-13 03:44:22

ios - 如何将属性与在多个 RACObserve 中的任何一个中发现的更改绑定(bind)


                                            <p><p>以下代码可以正常工作:</p>

<pre><code>[RACObserve(self.person, firstName)
subscribeNext:^(id x) {
   self.descriptionText = ;
}];
[RACObserve(self.person, lastName)
subscribeNext:^(id x) {
   self.descriptionText = ;
}];
[RACObserve(self.person, primitiveIntegerAge)
subscribeNext:^(id x) {
   self.descriptionText = ;
}];

- (NSString *)concatenateInformation {
   return ;
}
</code></pre>

<p>有没有办法允许这些 RACObserve 更改中的任何一个只修改 self.descriptionText 使用 RAC 宏绑定(bind)它?</p>

<p>我尝试了以下方法:</p>

<pre><code>RAC(self, occupancySummaryText) =
[[RACSignal
merge:@[
          RACObserve(self.person, firstName),
          RACObserve(self.person, lastName),
          RACObserve(self.person, primitiveIntegerAge) ]]
map:^id(id value) {
   return ;
}];
</code></pre>

<p>虽然它在应用程序运行时工作,但它会在 XCTest 运行期间失败,并出现如下错误:</p>

<p><strong>* __36-_block_invoke_2() 中的断言失败,/Pods/ReactiveCocoa/ReactiveCocoaFramework/ReactiveCocoa/RACStream.m:75
*</strong> 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“从 -flattenMap 返回的值:不是流:名称:”</p>

<p>如何以更优雅的方式实现上述目标?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我找到了这个问题的原因,虽然我不知道它是如何触发这个错误的。</p>

<p>在我的 Podfile 中,我在应用程序和测试目标中都包含了 ReactiveCocoa pod。从测试目标中移除 ReactiveCocoa pod 解决了这个问题。</p>

<p>原版有问题:</p>

<pre><code>target &#39;Application&#39; do
pod &#39;ReactiveCocoa&#39;, &#39;~&gt; 2.3&#39;
end

target &#39;ApplicationTests&#39; do
pod &#39;ReactiveCocoa&#39;, &#39;~&gt; 2.3&#39;
end
</code></pre>

<p>更新</p>

<pre><code>target &#39;Application&#39; do
pod &#39;ReactiveCocoa&#39;, &#39;~&gt; 2.3&#39;
end

target &#39;ApplicationTests&#39; do

end
</code></pre>

<p>如果有人能告诉我为什么会这样,我将不胜感激。</p>

<p>希望这对面临同样问题的其他人有用。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何将属性与在多个 RACObserve 中的任何一个中发现的更改绑定(bind),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27284563/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27284563/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何将属性与在多个 RACObserve 中的任何一个中发现的更改绑定(bind)