用于设置变量的AFMotion HTTP GET请求语法

时间:2015-03-24 00:01:01

标签: ruby rubymotion

我的目标是使用AFMotion的AFMotion :: HTTP.get方法设置实例变量。

我已经设置了Post模型。我希望有类似的东西:

class Post
  ...
  def self.all
    response = AFMotion::HTTP.get("localhost/posts.json") 
    objects = JSON.parse(response)
    results = objects.map{|x| Post.new(x)}
  end
end

但是根据文档,AFMotion需要某种块语法,它看起来像是异步javascript回调。我不确定如何使用它。

我希望能够致电

ViewController中的

@posts = Post.all。这只是一个Rails的梦想吗?谢谢!

1 个答案:

答案 0 :(得分:2)

是的,基本语法是异步的,因此您不必在等待网络响应时阻止UI。语法很简单,将所有要加载的代码放在块中。

class Post
  ...
  def self.all
    AFMotion::HTTP.get("localhost/posts.json") do |response|
      if result.success?
        p "You got JSON data"
        # feel free to parse this data into an instance var
        objects = JSON.parse(response)
        @results = objects.map{|x| Post.new(x)}
      elsif result.failure?
        p  result.error.localizedDescription
      end

    end

  end
end

既然你提到了Rails,是的,这是一个不同的逻辑。您需要在异步块内放置要运行的代码(完成时)。如果它经常发生变化,或与模型无关,则将& block传递给yoru方法,并在完成后使用该方法回电。

我希望有所帮助!