RubyMotion を使用して (初めて!)、Twitter の検索 API を使用して一部のユーザーの最近のツイートを取得したいので、以下のクラスをまとめました。
の値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