RubyMotion (처음으로!)을 사용하여 일부 사용자의 최근 트윗을 검색하기 위해 트위터의 검색 API를 사용하고자합니다.HTTP 응답 본문을 문자열로 가져 오기 (RubyMotion 용 BubbleWrap)
tweets
의 값은 항상 빈 배열입니다. 나는 BW::HTTP.get(url)
이 문제를 일으키는 자체 스레드를 생성한다고 의심합니다.
정말로, 단지 twitter_search_results
을 response.body.to_str
으로 되 돌리고 싶습니다. 그러나 어떻게해야할지 모르겠습니다.
RubyMotion (또는 BubbleWrap)을 사용하여 Tweet 개체를 UIViewController에 어떻게 배치합니까?
class TweetsController
def initialize
@twitter_accounts = %w(dhh google)
@tweets = []
end
def tweets
twitter_search_results
puts @tweets.count
@tweets
end
def create_tweets(response)
BW::JSON.parse(response)["results"].each do |result|
@tweets << Tweet.new(result)
end
end
def twitter_search_results
query = @twitter_accounts.map{ |account| "from:#{account}" }.join(" OR ")
url = "http://search.twitter.com/search.json?q=#{query}"
BW::HTTP.get(url) do |response|
create_tweets(response.body.to_str)
end
end
end
class TwitterViewController < UIViewController
def viewDidLoad
super
self.view.backgroundColor = UIColor.blueColor
@table = UITableView.alloc.initWithFrame(self.view.bounds)
self.view.addSubview @table
@table.dataSource = self
@tweets_controller = TweetsController.new
end
def initWithNibName(name, bundle: bundle)
super
self.tabBarItem = UITabBarItem.alloc.initWithTitle(
"Twitter",
image: UIImage.imageNamed('twitter.png'),
tag: 1)
self
end
def tableView(tableView, numberOfRowsInSection: section)
@tweets_controller.tweets.length
end
def tableView(tableView, cellForRowAtIndexPath: indexPath)
@reuse_id = "Tweet"
cell = UITableViewCell.alloc.initWithStyle(UITableViewCellStyleDefault, reuseIdentifier:@reuse_id)
cell.textLabel.text = @tweets_controller.tweets[indexPath.row].text
return cell
end
end
class Tweet
attr_reader :created_at, :from_user, :text
def initialize(tweet_result)
@created_at = tweet_result["created_at"]
@from_user = tweet_result["from_user"]
@text = tweet_result["text"]
end
end
#rubymotion으로 멈추고 걸쇠를 치면 저를 때려주세요. :-) – colinta
솔루션이 BW :: HTTP를 사용하지 않는 것이 흥미 롭습니다. HTTP 요청 차단이 누락되어 @colinta의보기에 버그가 있습니까? – user94154
나는 나의 대답을 고쳤다. 마이크는 NSWRLRequest와 family에 찬성하여 BW :: HTTP를 사용하지 않았다. 나는 Notifications의 사용을 추천했고 나의 원래 답은 위에있다. 나는 마이크가 내 대답에 대해 만든 매우 정교한 편집에 동의하지 않는다. – colinta