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 'Application' do
pod 'ReactiveCocoa', '~> 2.3'
end
target 'ApplicationTests' do
pod 'ReactiveCocoa', '~> 2.3'
end
</code></pre>
<p>更新</p>
<pre><code>target 'Application' do
pod 'ReactiveCocoa', '~> 2.3'
end
target 'ApplicationTests' 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]