• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:44:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

以下代码可以正常工作:

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

 - (NSString *)concatenateInformation {
     return [NSString stringWithFormat"%@ %@: %d", self.person.firstName, self.person.lastName, self.person.primitiveIntegerAge];
 }

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

我尝试了以下方法:

RAC(self, occupancySummaryText) =
[[RACSignal
  merge[
          RACObserve(self.person, firstName),
          RACObserve(self.person, lastName),
          RACObserve(self.person, primitiveIntegerAge) ]]
 map:^id(id value) {
     return [self concatenateInformation];
 }];

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

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

如何以更优雅的方式实现上述目标?



Best Answer-推荐答案


我找到了这个问题的原因,虽然我不知道它是如何触发这个错误的。

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

原版有问题:

target 'Application' do
  pod 'ReactiveCocoa', '~> 2.3'
end

target 'ApplicationTests' do
  pod 'ReactiveCocoa', '~> 2.3'
end

更新

target 'Application' do
  pod 'ReactiveCocoa', '~> 2.3'
end

target 'ApplicationTests' do

end

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

希望这对面临同样问题的其他人有用。

关于ios - 如何将属性与在多个 RACObserve 中的任何一个中发现的更改绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284563/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap