【问题标题】:How can i build a URL with same key multiple times?如何多次构建具有相同密钥的 URL?
【发布时间】:2014-05-28 09:12:22
【问题描述】:

我正在构建一个向 URL 发出 GET 请求的 iOS 应用。对于它发出的所有请求,我从基本 URL 构建 url,然后使用 NSDictionary Key-Value_pairs 添加参数。

我还使用AFNetworking 2.0 发出请求 - 它也构建 URL,并提供 NSDictionary 键。

我现在遇到了一个问题,我需要使用的 Web 服务要求多个键相同,但值不同。 NSDictionary 无法实现此功能

这意味着我无法成功运行网络服务。

这是我需要最终 URL 的示例 -

http://demo.domain.net/services/.....&IncludedUserIds=12345&IncludedUserIds=2345

上面 URL 的斜体部分是我尝试使用 AFNetworking 和 NSDictionary 构建的。我怀疑我将不得不使用比 NSDictionary 更高级的东西来实现这一点。

有人有什么想法吗?

编辑

如果我用 NSSet 像这样设置我的 NSDictionary 参数,找到了一半的解决方案:

    [self.parameters setObject:[NSSet setWithObjects:@"12345",@"2345", nil] forKey:@"IncludedUserIds"];

这可以按我的需要工作。但是我有一个后续问题:

值需要动态添加到 NSSet - 如何创建一个可以在运行时接受额外值的 NSSet?

【问题讨论】:

  • 最后一部分使用NSMutableSet
  • 我使用了 NSMutableArray 代替,因为我需要能够删除某个值 - 我看不出使用 NSMutableSet 如何轻松实现,因为它没有 objectAtIndex 方法。不过谢谢!!

标签: ios objective-c afnetworking-2


【解决方案1】:

我设法解决了这个问题:

我刚刚在我的 NSDictionaray 中创建了对象,如下所示:

    [self.myDictionary setObject:[NSSet setWithArray:self.myArray] forKey:@"myKeyNeeded];

数组中有 NSString 对象,这似乎工作得很好。 我使用数组而不是NSMutableSet,因为需要足够轻松地从 NSDictionary 中删除对象。

【讨论】:

    【解决方案2】:

    是的,你可以,因为&IncludedUserIds=12345&IncludedUserIds=2345 应该与&IncludedUserIds=12345,2345 相同

    所以只是一个数组,是参数字典中键的值。

    【讨论】:

    • 就是这样 - 服务器不理解逗号分隔的字符串。它将每个“IncludedUserIds”视为一个数组。所以 IncludedUserIds = 12345,23456 - 不存在。但是,IncludedUserIds = 12345, IncludedUserIds = 2345 - 返回两个存在的值。
    • 那么你在使用AFNetworking 时遇到了一个真正的问题,至少使用默认类。您将不得不滚动您自己的AFURLConnectionOperation 子类,它将NSArray 作为参数。也就是说,您的服务器实现也不符合 HTTP 标准,这是真正的问题。
    • 我更新了我的问题;我找到了一种解决方案。你知道如何解决最后一点吗?到目前为止,感谢您的帮助。
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多