我有一个漂亮的标准问题在这里,我有点困惑如何让更快捷的传统事物更优雅。Swift中的重构代码
我在我的APIClient中有一个基本的URL字符串,一个用于不同方法的路径,方法可能会传入一个可选的字符串。
我该如何写这个,使它更清洁?我觉得我写SWIFT代码,但不使用任何新的结构的(如门卫,让)等
// call the API
ApiClient.sharedInstance.getUser("56cfffce227a6c2c9b000001", successCompletion: successCompletion, failureCompletion: failureCompletion)
// setting the current URL
let currentURL = String("http://localhost:3000")
// class definition
class ApiClient {
var baseURL:String!;
// have to init the string class for the
init (base:String){
self.baseURL = base
}
class var sharedInstance: ApiClient {
struct Static{
static let instance = ApiClient(base: currentURL)
}
return Static.instance
}
func getUser(user_id: String?, successCompletion: ResultHandler<User>, failureCompletion:ResultHandler<FailureReason>){
// this is awkward
var url: URLStringConvertible!
// this is even more awkward
if user_id != nil {
url = "\(currentURL)/users/\(user_id!).json"
} else {
url = "\(currentURL)/users/me"
}
}
}
创建单更妙的是这一个班轮:'静态令sharedInstance = MyClass的()'HTTP:// krakendev。 io/blog/the-right-way-to-write-a-singleton –
潜在的问题是你只能设置一次,所以它不是很通用。 – PeejWeej
谢谢!这对单身人士有什么好处? –