首页 > 解决方案 > 使用 swift 语言在 NSMutableURLRequest URL 中导致错误的日期字符串

问题描述

我在转换为字符串后传递日期但导致错误

unexpectedly found nil while unwrapping a value

这是请求的代码

let url = SERVICE_URL + "GetHistoryDataByTerminalNo?TerminalNo=\(VehicleList.SelectedTerminal.selectedTerminalId)&fromDate=\(fromDateText)&toDate=\(endDateText)"
    
let request = NSMutableURLRequest(url: NSURL(string: url)! as URL,
                          cachePolicy: .useProtocolCachePolicy,
                       timeoutInterval: 30.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

更新 我得到这个网址

http://labs2.unitedtracker.com/api/Trackers/GetHistoryDataByTerminalNo?TerminalNo=351535058776063&fromDate=2020-08-23 14:15:52.000&toDate=2020-08-23 16:15:52.000

标签: iosswiftxcode

解决方案


我建议不要手动搞乱 URL 编码——我们有URLComponents这个。

例如:

let SERVICE_URL = "https://example.com/service/"
let url = SERVICE_URL + "GetHistoryDataByTerminalNo"
var components = URLComponents(string: url)!

components.queryItems = [
    URLQueryItem(name: "TerminalNo", value: VehicleList.SelectedTerminal.selectedTerminalId),
    URLQueryItem(name: "fromDate", value: fromDateText),
    URLQueryItem(name: "toDate", value: toDateText)
]

let request = URLRequest(url: components.url!, timeoutInterval: 30)

(您可能需要更多的错误检查)

另外,正如@Joakim 提到的,如果可以避免使用 NS... 类型,请不要使用它们。


推荐阅读