2015-09-06 4 views
1

Я пытаюсь использовать restfb, чтобы вытащить понравившиеся пользователи из facebook. Итератор docs say поддерживает подкачку, но это не работает в моем коде Scala. Я ожидаю, что это будет связано с ошибками javaConversions, но я не уверен.Java-итератор, используемый в scala, не работает должным образом

Вот мой код:

import com.restfb.types.{Page, Photo, User} 
import com.restfb.{Parameter, Version, DefaultFacebookClient} 
import collection.JavaConversions._ 

class Facebook(accessToken: String) { 

    val facebookClient = new DefaultFacebookClient(
    accessToken, 
    Version.VERSION_2_4) 

    def getInterests = { 

    val likes = facebookClient.fetchConnection("me/likes", classOf[Page], 
     Parameter.`with`("fields", "id,name,category")) 

    likes.getData.map(like => s"id=${like.getId}, name=${like.getName} -- ") 
    } 
} 

Я попытался изменить likes.getData к likes.getData.iterator, но я получаю сообщение об ошибке org.json4s.package$MappingException: Classes defined in method bodies are not supported.

Что мне нужно сделать, чтобы итератор, возвращаемый likes.getData страницу результатов так Я могу сопоставить их все?

ответ

0

мне нужно карту через соединение, а также, т.е .:

likes.flatMap(likeConn => likeConn.map(like => 
    s"id=${like.getId}, name=${like.getName} -- ")) 

Затем он автоматически Разбивать.

+0

Это потому, что 'Connection' - это страница, и на этой странице вы найдете некоторые элементы (в вашем случае' Like'). Поэтому вам нужно перебирать страницы, а затем пункты на странице. – Norbert

0

Попробуйте использовать JavaConverters вместо JavaConversions:

import scala.collection.JavaConverters._ 

val data = likes.getData.asScala.map(like => s"id=${like.getId}, name=${like.getName} -- ") 
+0

Это все то же самое :-( – jbrown