2016-08-08 2 views
0

RubymotionとのSendBirdチャットの統合に取り組んでいます。私はObjective-C/Swift構造の知識が限られているため、SDKからMessaging Channel Listを取得できないため、いくつかの問題が発生しています。SendBird SDKメソッドのRubymotion翻訳

私はRubyMotionコードに次のコードを変換するいくつかの助けいただければ幸いです:

の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) { 
    }]; 
} 

スウィフト:

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

これまでのところ、私はこれを持っているが、それはあるがエラーで失敗します。

Rubymotion:

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

エラー:

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

私は本当にきちんとこの場合のブロックを設定する方法がわかりません。

答えて

0

だから、nextWithResultBlockは実際には、あまりにも、エンドブロックを渡す必要があり、これは最終的にそれを解決:NoMethodErrorが私を投げた

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