2017-08-23 1 views
1

Je viens de commencer à apprendre RxSwift et fait face à une étrange erreur de compilation. Code de qui fonctionne:'Bool' n'est pas convertible en '() throws -> Bool'

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()!) 
     } 

Description:

createChatInputs - tuple (UIImage?, String?, [User]) 

Mais quand j'écris un code à l'intérieur de la dernière fermeture:

.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()!) 
    } 

Le compilateur dit: 'Bool' is not convertible to '() throws -> Bool' et le point sur la ligne avec filter. Toute aide serait appréciée.

Répondre

1

Essayez .flatMapLatest { element -> <RETURN TYPE> in .... Si un bloc flatMap ne contient qu'une seule ligne, le type de retour n'est pas nécessaire.

+0

Merci, j'étais très confus à propos de ce message d'erreur :) –