【发布时间】:2021-12-07 06:31:12
【问题描述】:
我是 swift PL 的新手。我对新的实施有疑问。您的帮助将不胜感激。谢谢。
Desc :我在一个具有多个 API URL 的类中有一个枚举。这些 API URL 正在访问一个变量 - BaseURL 在同一个类中声明。我想从另一个类更改 BaseURL 的值,但枚举变量正在获取相同的旧值。
类:API.swift
var BaseURL = "xyz.com/"
enum apis {
static let login = BaseURL + "login"
}
类:ViewControllerA.swift
func switchBaseURL() {
BaseURL = "abc.com/"
// Call API Method
self.callAPI()
}
func callAPI(){
print("\(apis.login)") // Result is : xyz.com/login
}
我想实现一个解决方案,可以随时从任何类切换BaseURL 的值,以便枚举每次都获取 BaseURL 中设置的最新值。
【问题讨论】:
-
将
BaseURL设为static类型,以便在更新Url时将其保存以供进一步使用 -
@Kudos 我尝试使用
class a { static var BaseURL = String() }。然后赋值为:a.BaseURL = "xyz.com/"inAppDelegate.swift。将ViewControllerA.swift中的值切换为-a.BaseURL = "abc.com/"。结果还是一样。 -
好。那么改值后你是不是又打电话给
self.callAPI()了? -
@Kudos 是的。
switchBaseURL()方法执行更改 URL 并调用self.callAPI()。是不是因为枚举中使用的static使它只存储以前的值而不是在更改时再次计算值? -
我认为是的。从
static let login = BaseURL + "login"中删除静态并将let替换为var并尝试