无法让 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 匹配以删除孤儿对象的主要内容,如果未能解决你的问题,请参考以下文章