ios - 使用快速语言在NSMutableURLRequest URL中引起日期字符串错误

标签 ios swift xcode

转换为String后我正在传递日期,但导致错误

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

最佳答案

您不能只将带有空格的字符串放入URL中,而必须先对其进行URL编码。
首先,添加extension进行URL编码:

extension String {
    public var urlEncoded: String {
        var allowedCharacters = CharacterSet.urlQueryAllowed
        allowedCharacters.remove(charactersIn: "!*'();:@&=+$,/?%#[]")

        return addingPercentEncoding(withAllowedCharacters: allowedCharacters) ?? ""
    }
}
其次,对参数值进行编码:
let url = SERVICE_URL + "GetHistoryDataByTerminalNo?TerminalNo=\(VehicleList.SelectedTerminal.selectedTerminalId.urlEncoded)&fromDate=\(fromDateText.urlEncoded)&toDate=\(endDateText.urlEncoded)"
或者,您可以使用URLComponentsURLQueryItem生成您的URL。

关于ios - 使用快速语言在NSMutableURLRequest URL中引起日期字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63546168/

相关文章:

swift - 从 AVCaptureSession 录制的音频在流式传输到另一台设备时生成 "Bad Address"错误

swift - 使用循环填充多维数组

swift - 在 Swift 中返回实例类型

iOS 应用程序开发 Windows 上的 PhoneGap 或 Xamarin

objective-c - 在 iOS App info.plist 中使用预处理器定义

ios - 如何拖放 UIWebView

javascript - 如何在 Angular Js 应用程序上启用双击

ios - Swift 3 CGImage 内存问题

ios - NSFetchedResultsController 操作名称 - 根据日期自定义排序

swift - 如何在 OSX、Xcode 8、Swift 3 中实现单选按钮?