无法让 RKPathMatcher pathMatcher 匹配以删除孤儿对象

Posted

技术标签:

【中文标题】无法让 RKPathMatcher pathMatcher 匹配以删除孤儿对象【英文标题】:Can't get RKPathMatcher pathMatcher to match for deleting orphans objects 【发布时间】:2015-02-21 18:28:03 【问题描述】:

我在删除路径匹配器从不匹配的孤立对象时遇到问题。如果路径在路径中包含 2 个 ID,我应该使用什么作为路径。谢谢。

即 /api/getEntity/1234/123 其中 1234 是父 ID,123 是实体 ID

请求块如下:

  NSMutableURLRequest *request = [NSMutableURLRequest
 requestWithURL:[NSURL URLWithString:formattedUrl]];
     [sharedManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) 

        RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern::@"/api/getEntity/all/:parentEntityId/:entityId/"];         NSDictionary *argsDict = nil;
        BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict];
        if(match)
            NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
            NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeEntity" inManagedObjectContext:[RKManagedObjectStore
 defaultStore].mainQueueManagedObjectContext];
             [fetchRequest setEntity:entity];             return fetchRequest;
        
        return nil;
    ];

【问题讨论】:

看起来一般,它有一个问题没有的all,并且尾部的斜杠可能会导致问题,所以你应该删除它。 是的,我在顶部错过了。 url 为 /api/getEntity/all/1234/123/ 父实体中的 id 为 parentEntityId ,实体中的 id 为 entityId 。 那么您是否尝试删除尾部斜杠?您是否记录了 URL 和相对路径?调试匹配过程? :entityId/ 后面的斜线? 是的 - 实际上是在 URL 路径中,通常不是... 【参考方案1】:

这看起来像是您将要加载的 URL 路径与 /api/getEntity/all/:parentEntityId/:entityId/ 的匹配器规范不匹配,因为您通常不会在 URL 上放置一个尾部斜杠,因为这表示一个目录,而您实际上是在加载页面'。斜线和结构对匹配器很重要。

所以,去掉尾部的斜线。

一般来说,您的基本 URL 应该有一个尾部斜杠,并且您的所有路径模式都不应该有前导或尾部斜杠。

【讨论】:

以上是关于无法让 RKPathMatcher pathMatcher 匹配以删除孤儿对象的主要内容,如果未能解决你的问题,请参考以下文章

无法让 setBackgroundMessageHandler 工作

Gmail:无法让您登录(自动)

无法让 playInputClick 工作

无法让 CGGradientRef 使用 alpha

我无法让我的 javascript 函数工作?

无法让 UITableViewAutomaticDimension 正常工作