我如何使AFIncrementalStore post数据到Rails作为对象



我有一个iOS + Rails 3.1应用程序,我使用AFIncrementalStore进行客户端-服务器通信。这是一个日历应用程序,Activity是主要模型。

当我创建一个新的活动使用Rails web表单,服务器接收到这个:

Started POST "/activities" for 127.0.0.1 at 2013-06-21 22:38:04 +0200
  Processing by ActivitiesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"pruaVLfUijjNrYfh17yJmQgYLrnrA713OjgdayudZAg=", "activity"=>{"text"=>"Test från web", "starts_at_formatted"=>"23:00"}, "commit"=>"Create Activity"}

但是当我从我的iOS应用程序中发布时,它看起来像这样:

Started POST "/activities" for 127.0.0.1 at 2013-06-21 22:36:10 +0200
  Processing by ActivitiesController#create as JSON
  Parameters: {"activityID"=>"0", "auth_token"=>"xkT2eqqdoNp5y4vQy7xA", "ends_at"=>nil, "starts_at"=>"2013-06-21T22:36:10+0200", "text"=>"Inserted!", "updated_at"=>nil}
WARNING: Can't verify CSRF token authenticity

。我错过了包装活动数据的"activity"=> {...}位。我如何实现这一点,我是否需要在我的AFRESTClient <AFIncrementalStoreHTTPClient>子类中对representationOfAttributes进行大规模检修?

您需要在您的AFRestClient子类中实现-representationOfAttributes:ofManagedObject:来包装默认返回的字典。

如果默认的属性映射已经工作,它可能像下面这样简单:

- (NSDictionary *)representationOfAttributes:(NSDictionary *)attributes ofManagedObject:(NSManagedObject *)managedObject
{
    return @{[managedObject.entity.name lowercaseString]: [super representationOfAttributes:attributes ofManagedObject:managedObject]};
}

如果您需要做一些自定义属性映射,只需在我调用super的地方做。

相关内容

  • 没有找到相关文章

最新更新