gpt4 book ai didi

restkit - 如何防止多个 RKResponseDescriptor 匹配?

转载 作者:行者123 更新时间:2023-12-01 05:23:45 26 4
gpt4 key购买 nike

我在使用 2 个实体的应用程序中使用 RestKit 0.20.0rc1:

  • 一个“笔记”(NoteClass)。
  • 一个“集合”(SetClass),其中包含一个音符集合。

  • 我有以下 2 个响应描述符(除其他外):
    // GET /sets/:setID/notes
    // Get a set's notes. Response looks like this:
    // {"notes": [ (array of NoteClass dictionaries) ],
    // ...more stuff...
    // }
    RKResponseDescriptor *noteResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[NoteClass rkEntityMapping]
    pathPattern:@"/sets/:setID/notes"
    keyPath:@"notes"
    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
    [objectManager addResponseDescriptor:noteResponseDescriptor];

    // GET /sets/:setID
    // Get information about a set. Response looks like this:
    // {"name": "My Set",
    // "numNotes": 3,
    // ...more stuff...
    // }
    RKResponseDescriptor *setResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[SetClass rkEntityMapping]
    pathPattern:@"/sets/:setID"
    keyPath:nil
    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
    [objectManager addResponseDescriptor:setResponseDescriptor];

    当我请求“/sets/:setID/notes”时,noteResponseDescriptor 匹配(预期)。但是, setResponseDescriptor 也匹配(意外)。我相信这是因为响应描述符的路径模式与子字符串“/sets/:setID”匹配,并且因为关键路径为零。结果,当我发出请求时,我返回的 RKMappingResult 包含一个 NoteClass 对象数组(预期)和一个空的 SetClass 对象(预期)。

    如何防止 setResponseDescriptor 匹配此注释端点?我无法向 setResponseDescriptor 添加关键路径(目前),因此我倾向于使用一种解决方案,该解决方案允许我说出“匹配/sets/:setID$”之类的内容,其中“$”表示 URL 的结尾。

    最佳答案

    事实证明,现在有办法防止您的示例出现多次匹配(参见讨论 here)。

    虽然正在制定解决方案,但您有几个选项可以解决此问题:

  • 更改您的 API 网址,以免导致歧义
  • 检查映射结果对象的类型并丢弃任何意外对象
  • 按照讨论主题中的建议修改 [RKResponseDescriptormatchesPath:]。

  • 不过,每个解决方案都有其自身的缺陷。

    关于restkit - 如何防止多个 RKResponseDescriptor 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011404/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com