Если вы пришли сюда, задаваясь вопросом, почему ваши идентичные URLRequest
не равны друг другу, как я, я нашел причину в том, что эквивалентная реализация URLRequest
различает существо httpBody
устанавливается в ноль или по умолчанию в ноль.
Если мы делаем следующее:
let request = URLRequest(url: URL(string: "test.com"))
var expectedRequest = URLRequest(url: URL(string: "test.com"))
expectedRequest.httpBody = nil
Тогда:
request == expectedRequest //false
print(request.httpBody) // nil
request.httpBody = nil
request == expectedRequest //true
Явно устанавливает httpBody
nil
исправит эту проблему.На самом деле, что это за тело, не имеет значения, только то, что оно было явно установлено.
request.httpBody = Data()
request == expectedRequest //true
Потенциальное объяснение
Как справедливо указывает Мартин Исходный код Swift не включает httpBody.Однако все свойства (в ссылке), равные (и оба из которых могут быть преобразованы как NSURLRequests), не возвращают true
(см. Вывод lldb ниже).Я могу только предположить, что связанный код переопределен, чтобы включить другое свойство, и это изменяется, когда didSet
или willSet
вызывается httpBody