我刚开始学习RxSwift并遇到奇怪的编译时错误。 有效的代码:
let createChatFlow = createChatBinding.createAction
.withLatestFrom(createChatInputs)
.map { ($0.0, $0.1, $0.2.map {$0.id}) }
.filter { !$0.2.isEmpty && $0.1?.isEmpty == false }
.flatMapLatest { element in
return self.conversationManager.create(chat: Chat(), with: element.0 ?? LetterImage(size: kDefaultAvatarSize, fullName: element.1 ?? kEmptyStringValue).getImage()!)
}
说明
createChatInputs - tuple (UIImage?, String?, [User])
但是当我在最后一个闭包内写一些代码时:
.flatMapLatest { element in
var chat = Chat()
chat.owner = AppState.current.user.id
return self.conversationManager.create(chat: chat, with: element.0 ?? LetterImage(size: kDefaultAvatarSize, fullName: element.1 ?? kEmptyStringValue).getImage()!)
}
编译器说:'Bool' is not convertible to '() throws -> Bool'
并指向filter
行。任何帮助将不胜感激。
答案 0 :(得分:1)
试试.flatMapLatest { element -> <RETURN TYPE> in ...
。
如果flatMap
块只包含一行,则返回类型 - 不是必需的。