我有一个api类,它进行api调用,并且大多数调用是相同的,但是有些返回某些内容(JSON数据),而有些则不然。还调用了仅检查参数是否已注册并返回true或false的调用。因此,目前我们有3个api调用,它们具有完全相同的代码,但几乎没有差异或返回值。
这是两个示例,第一个示例将使用JSON数据设置内部类属性,第二个示例将返回true或false:
///Call an api with the given url param
private func call(){
let request = NSMutableURLRequest(URL: NSURL(string: userApiCallUrl)!)
request.HTTPMethod = "POST"
request.HTTPBody = postParam.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
guard error == nil && data != nil else {
// check for fundamental networking error
print("error=\(error)")
return
}
if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {
// check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
self.setJsonData(responseString!)
}
task.resume()
}
///Call to check if UDID exist. Returns true or false. For the moment returns true allways
private func callToCheck()->Bool{
let request = NSMutableURLRequest(URL: NSURL(string: userApiCallUrl)!)
request.HTTPMethod = "POST"
request.HTTPBody = postParam.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
guard error == nil && data != nil else {
// check for fundamental networking error
print("error=\(error)")
return }
if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {
// check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
return true
}
代码几乎相同。我的问题是这样做的最佳实践是什么?据我所知,重复代码并不是最好的做法。但是现在我还看不到另一种方式。
当您调用函数int类型时,请使用一个额外的参数。然后切换int(情况1将返回一些数据,情况2将返回其他类型的数据)。作为一般建议。在您的最终函数中,使用NSMutableDictionary,将初始int分配为键的值,将每种情况的结果分配为具有结果值的其他键。毕竟,您会在回电的情况下知道您要使用的数据以及使用的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句