2016-08-08 12 views
0

Ich arbeite an einer SendBird Chat Integration mit Rubymotion. Ich stoße auf einige Probleme, da ich aufgrund meiner begrenzten Kenntnisse der Objective-C/Swift-Strukturen keine Messaging-Kanalliste aus dem SDK bekommen kann.Rubymotion Übersetzung von SendBird SDK Methoden

würde ich etwas Hilfe schätzen den folgenden Code in RubyMotion Code übersetzen:

Objective-C:

- (void) queryMessagingChannels 
{ 
    messagingChannelListQuery = [SendBird queryMessagingChannelList]; 
    [messagingChannelListQuery setLimit:15]; 
    [messagingChannelListQuery nextWithResultBlock:^(NSMutableArray *queryResult) { 
     ... 
     for (int i = 0; i < [queryResult count]; i++) { 
      SendBirdMessagingChannel *mc = (SendBirdMessagingChannel *)[queryResult objectAtIndex:i]; 
      ... 
     } 
     ... 
    } endBlock:^(NSError *error) { 
    }]; 
} 

Swift:

func queryMessagingChannels() { 
    messagingChannelListQuery = SendBird.queryMessagingChannelList() 
    messagingChannelListQuery?.setLimit(15) 
    messagingChannelListQuery?.nextWithResultBlock({ (queryResult) -> Void in 
     .... 
     for model in queryResult { 
      let mc: SendBirdMessagingChannel = model as! SendBirdMessagingChannel 
      .... 
     } 
     .... 
     }, endBlock: { (code) -> Void in 
    }) 
} 

Bisher habe ich das, aber es ist fehlgeschlagen mit einem Fehler.

Rubymotion:

mp "Iterating over MessagingChannelList" 
@messagingChannelListQuery = SendBird.queryMessagingChannelList() 
@messagingChannelListQuery.setLimit(5) 
@messagingChannelListQuery.nextWithResultBlock.each do |queryResult| 
    @messaging_channels << queryResult 
end 
# reload tableview data here 

Fehler:

chat_messaging_screen.rb:49:in `load_async': undefined method `nextWithResultBlock' for #<SendBirdMessagingChannelListQuery:0x117c672e0> (NoMethodError) 

Ich weiß wirklich nicht, wie man richtig den Block in diesem Fall einzurichten.

Antwort

0

Ok. So ist die nextWithResultBlock erfordert tatsächlich Endblock zu vorbei, so das es endlich gelöst:

@messagingChannelListQuery.nextWithResultBlock(
    -> (queryresult) { 
    #do something here with queryresult.each 
    }, 
    endBlock: -> (code) { 
    } 
) 

Die NoMethodError mich abzuwerfen.