【发布时间】:2019-05-31 23:37:47
【问题描述】:
我正在使用从用户那里收集的值构建一个 RESTful API 查询。其中一些值可能未提供,因此我使用了可选项。有 Double、Int 和 String 值。我使用的代码看起来很笨拙。有没有一种更简洁、更快捷的方式来编写这段代码?
'''斯威夫特
let baseURL = "http......"
// Start with required parms
let format = "?format=\(parms.format)"
let endTime = "&endtime=\(parms.endDate)"
// now for optionals
let startTime = parms.startDate != nil ? "&starttime=\(parms.startDate!)" : ""
// Sorted by
let orderby = parms.orderby != nil ? "&orderby=\(parms.orderby!)" : ""
// parts.limit is Int?
let limit = parms.limit != nil ? "&limit=\(parms.limit!)" : ""
var strURL: String
strURL = "\(baseURL)\(format)\(startTime)\(endTime)\(orderby)\(limit)"
'''
我得到了我需要的结果。例如,如果用户没有提供 StartDate 参数,则不会在查询字符串中引用它。
''' https://.....?format=geojson&endtime=2019-05-31&orderby=magnitude&minmagnitude=5&limit=2000 '''
但我有一种错过 Swift Optionals 要点的感觉
【问题讨论】:
-
与您的需要无关,但如果带有参数的 URL 是您的最终目标,请使用
URLQueryItems。