【问题标题】:RestKit 2.0 getObjectsAtPathForRelationship : Error perform pattern matchingRestKit 2.0 getObjectsAtPathForRelationship:执行模式匹配时出错
【发布时间】:2013-10-16 15:01:38
【问题描述】:

我有点卡在 RestKit 2.0 上。 我在 CoreData 上有一个用户实体,它与 ActionStream-Entity 有关系 再次与 Action-Entity 有关系。

用户有关系 one_to_one ActionsStream ActionsStream 有关系 one_to_many Actions

当我登录用户时,我会得到一些数据和一个令牌,让我可以访问 ActionStream。 所以我需要将 Json Reponse 映射到我的 ActionsStream 实体。

// Example Json ActionsStream with 2 Action items
{
   "total_count":2,
   "number_of_pages":2,
   "current_page":1,
   "items":[
      {
         "id":58606,
         "description":"dd "

      },
      {
         "id":58602,
         "description":"dd "

      }
   ]
}

我的 Action 和 ActionStream 映射很简单,但我会添加它以供参考:

NSDictionary *mappingDict = @{  @"id" : @"id",
                                @"description" : @"description" };


NSDictionary *mappingDict = @{  @"total_count" : @"totalCount",
                                @"number_of_pages" : @"numberOfPages",
                                @"current_page" : @"currentPage"};

我希望按如下方式加载文件。

- (void)loadUserActionss:(User*)user{

RKObjectManager *objectManager = [RKObjectManager sharedManager];

[objectManager addResponseDescriptorsFromArray:@[
                                                 [RKResponseDescriptor responseDescriptorWithMapping:[ActivityStream entityMapping:objectManager.managedObjectStore]
                                                                                              method:RKRequestMethodAny
                                                                                         pathPattern:nil
                                                                                             keyPath:nil
                                                                                         statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]
                                                 ]];

[objectManager getObjectsAtPathForRelationship:@"actionSream"
                                ofObject:user
                                parameters:nil
                                    success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

                                   NSLog(@"Success");

                                }failure:^(RKObjectRequestOperation *operation, NSError *error) {

                                    NSLog(@"Failure");
                                }];

}

我得到的错误如下:
+[RKPathMatcher pathMatcherWithPattern:] 'NSInternalInconsistencyException',原因:'模式字符串不能为空才能执行模式匹配。'

我是 RestKit 的新手,所以任何指导都会有所帮助,包括我是否以正确的方式处理这种情况并且应该使用不同的方法。 谢谢你。 铝

【问题讨论】:

  • 你有设置路由吗?你是如何教 RestKit 关于activitySream 关系以及如何导航它的?此外,您显示的映射不处理items
  • 路线:我没有意识到我需要设置路线。我需要这样做吗?我希望给出参数 getObjectsAtPathForRelationship:@"actionSream" 对 RestKit 来说就足够了。至于Items,我希望先做ActionStream,然后再担心动作。目前我只是得到错误。注意“Activity”就是“Actions”,这里只是做一个简单的例子。

标签: json cocoa core-data restkit restkit-0.20


【解决方案1】:

您看到的错误是因为您使用了getObjectsAtPathForRelationship 方法,但您没有向RestKit 提供足够的信息来了解如何从服务器请求该信息。您可以通过以下两种方式之一提供信息:

  1. 调用方法时设置路径参数
  2. 创建一个RKRoute,描述该关系名称的路由(路径)

您看到的错误 ('Pattern string must not be empty in order to perform pattern matching.') 描述了这种信息缺失。

【讨论】:

  • 用我不知道的 [RKRoute routeWithRelationshipName...] 解决。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
相关资源
最近更新 更多