swift - 将 URL 的常量部分作为对所有视图控制器可用的变量
问题描述
我目前通过从 URL 加载信息来表达 JSON 数据,URL 来自两种形式的 API:
test.example.com
和example.com
整个应用程序中的完整链接在正斜杠之后总是以不同的方式结束:
test.example.com/example1
...test.example.com/example2
但开头永远是上述两种形式之一
我希望能够通过使用可能适用于所有视图控制器的扩展在一个地方更改它来轻松地在两个 URL 之间切换。
所以例如我有:
private func JSON() {
guard let url = URL(string: "https://test.example.com/example"),
let sample = value1.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed)
else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = "example1=\(example)".data(using: .utf8)
URLSession.shared.dataTask(with: request) { data, _, error in
guard let data = data else { return }
do {
self.JStruct = try JSONDecoder().decode([exampleStruct].self,from:data)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
catch {
print(error)
}
}.resume()
}
在两个网址之间切换的最佳方法是什么?
更新:
只使用:
struct URLVar {
static var url = "https://example1.com/example/"
}
并在需要时参考 URLVar.url?
解决方案
我通常做的是维护一个 api.plist 文件(一个键值文件存储)和一个 environment.plist 文件。API 的结尾部分将存储在 api.plist 中,而域部分example.com
将存储在 environment.plist 中。
请注意,这样,我可以有多个 environment.plist 文件指向不同的位置(生产服务器、登台服务器等)。我可以使用构建脚本阶段简单地切换到必要的 environment.plist 中。
为了阅读,我使用了苹果提供的普通 plist 阅读机制,并将 domainUrl(在 environment.plist 中)与所需的资源路径(在 api.plist 中)结合起来。以下链接将为您探索阅读选项: https ://learnappmaking.com/plist-property-list-swift-how-to/
您还可以查看以下库,它为 .plist 文件添加了一些漂亮的代码生成功能: https ://github.com/SwiftGen/SwiftGen
推荐阅读
- sql-server - SQL Server 在请求事务期间卡住了一张表
- ios - 如何以编程方式获取电话 (iOS) 提供商列表?
- ruby-on-rails - Rails:简洁地打印变量名称和
标签(如果存在) - node.js - 如何使用request-promise从nodejs中的HTTP GET请求获取字符串响应到变量
- python - 如何在没有全局变量的情况下将值传递给回调以进行匿名化?
- selenium - 如何解决 Selenium ChromeDriver Timed out 从渲染器异常接收消息
- ruby-on-rails - 如何访问定制的狂欢模型
- python - 如何使用 PYTHON 代码将 Markdown 表的标题行内容向左对齐,所有其他行内容向右对齐
- python - 当有很多选择时如何提高我的熊猫效率
- powershell - 点源脚本在第二次运行时未引用当前目录