ios - 根据条件使用 switch case
问题描述
我制作了一个名为Constants.swift
. 在此之内,我做了一个这样的课程......
public class WebServices {
static let getMyPlants : String = "plant/getPlants"
static let getMyOrganizations: String = "organization/getOrganizations"
}
现在,每当我在项目中的任何地方使用 api 时,我都会使用Webservices.getMyPlants
.
现在我也有每个 API 的 base-url。就像下面提到public class WebServices....
的那样..
struct envDev {
var BASEURL : String = "http://api-proj-dev.ii.the-co.com/api/"
}
现在,base-urlWebservices.getMyOrganizations
不同了。我想在其中使用一个条件struct envDev
,如果我选择了Webservices.getMyOrganizations
,那么我可以给出不同的BASEURL
。就像是...
//The below code isn't right. I just wrote it to represent the kind of solution I wish to have.
struct envDev {
var BASEURL : String = "http://api-proj-dev.ii.the-co.com/api/"
if Webservices.getMyOrganizations {
var BASEURL : String = "http://my second base-url.."
}
}
编辑 1在签名下方给出APIHelper
class APIHelper: NSObject {
var API: NSString
var json: NSString
var receivedJSON: NSString?
var arrResult: NSMutableArray = []
let esmatBaseUrl = AppDelegate().currentUser //This is given in AppDelegate as `var currentUser = envDev()`
()
编辑 2baseUrl
在 APIHelper 中包含计算属性和错误。
class APIHelper: NSObject {
var API: NSString
var json: NSString
var receivedJSON: NSString?
var arrResult: NSMutableArray = []
let esmatBaseUrl = AppDelegate().currentUser //This is given in AppDelegate as `var currentUser = envDev()`
()
var baseUrl: String {
esmatBaseUrl.baseUrl(forApi: API as String) // Here I'm getting the error as `Value of type 'envDev' has no member 'baseUrl'`
}
解决方案
envDev
无法知道发生了什么APIHelper
,所以你需要一种方法来传递API
from APIHelper
to envDev
。这意味着它BASEURL
不应该是一个属性,而是一个方法:
func baseUrl(forApi api: String) -> String {
switch api {
case WebServices.getMyPlants: return "some url"
case WebServices.getMyOrganizations: return "some other url"
default: fatalError()
}
}
然后在 中APIHelper
,您可以添加一个baseUrl
调用上述方法的计算属性:
var baseUrl: String {
esmatBaseUrl.baseUrl(forApi: API as String)
}
这意味着您需要将esmatBaseUrl.BASEURL
现有代码中所有出现的 更改为 just baseUrl
。
另外,我建议不要在 Swift 中使用NSString
,NSArray
等。你应该和他们的 Swift 对应:String
和[T]
.
推荐阅读
- python-3.x - 如何解决 ValueError:无法重塑对象检测中的尺寸误差?
- python - Python - 删除字符串中最后一个对象的逗号以获得有效的 JSON
- ios - 如何使用 iOS Touchid 和 Faceid 实现 MSAL
- javascript - Javascript:如何倒计时和循环计时器,将日期时间从 23:59:59 转换为 00:00:00
- android - 如何将加号按钮单击的第一个值设置为默认值以保存在我的 TextView 中?
- mysql - 如何计算总和列的百分比?
- java - 从 FTP 获取数据并添加到 salesforce
- javascript - 如何使用 vue-quill 包聚焦 Quill 编辑器?
- c# - 如何解决C#中的类名冲突问题
- javascript - React App 未在 Internet Explorer 中显示