私はRubymotionを試していますが、単純なタスクのように見えることを達成する方法を理解できないようです。
人々のディレクトリ用にUITableViewを設定しました。jsonを返すrailsバックエンドを作成しました。
Personモデルには、get_peopleクラスメソッドが定義されています。
def self.get_people
BubbleWrap::HTTP.get("http://myapp.com/api.json") do |response|
@people = BW::JSON.parse(response.body.to_str)
# p @people prints [{"id"=>10, "name"=>"Sam"}, {etc}] to the console
end
end
directory_controllerで、@ dataのインスタンス変数を、エンドポイントが返す配列に設定して、テーブルビューにデータを入力できるようにします。
viewDidLoadで実行しようとしています@data = Person.get_people
が、代わりにBW応答オブジェクトが渡されていることを示すエラーメッセージが表示されます:undefined method
count'for #BubbleWrap :: HTTP :: Query:0x8d04650 ...>(NoMethodError) `
したがって、BW応答ブロックの後に配列をget_peopleメソッドにハードコーディングすると、すべてが正常に機能します。しかし、BW応答ブロックを閉じるまでインスタンス変数を永続化することもできないことがわかりました。
def self.get_people
BubbleWrap::HTTP.get("http://myapp.com/api.json") do |response|
@people = BW::JSON.parse(response.body.to_str)
end
p @people #prints nil to the console
# hard coding [{"id"=>10, "name"=>"Sam"}, {etc}] here puts my data in the table view correctly
end
ここで何が欠けていますか?このデータをバブルラップの応答オブジェクトから取得して、コントローラーに渡すために使用可能な形式にするにはどうすればよいですか?