私はAPIコールを作成するAPIクラスを持っており、ほとんどの呼び出しは同じですが、いくつかは何かを返すものです(JSONデータなど)。また、paramが登録されているかどうかをチェックする呼び出しがあり、trueまたはfalseを返します。だから、今のところ、3つのAPIコールがありますが、まったく同じコードですが、違いや戻り値はほとんどありません。異なる戻り値の型で複数回同じメソッドを書く必要があるときは、同じメソッドを2回書くのがベストプラクティスですか?
これらの2つの例で、最初のものは、第二は、真または偽を返し、JSONデータと内部クラスのプロパティを設定します:
///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
}
コードがほぼ同じです。私の質問は、これを行うベストプラクティスは何ですか? 私が知る限り、重複コードは最善のことではありません。しかし、今私は明らかに別の方法を見ていない。
戻り値の型を汎用にします。 [AnyObjectまたはAny]のように(http://stackoverflow.com/questions/25809168/anyobject-and-any-in-swift) – NSNoob
メソッドが同じだが、戻り値の型が異なる場合は、 "Object"を返し、そのオブジェクトインスタンス内の目的のクラスのインスタンス – Abhishek